<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Navo Portable Library: 双端线形序表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- 制作者 Doxygen 1.7.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
--></script>
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Navo Portable Library&#160;<span id="projectnumber">Ver 1.0.20120827</span></div>
   <div id="projectbrief">Provides generic platform independent facilities.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>首页</span></a></li>
      <li><a href="modules.html"><span>模块</span></a></li>
      <li><a href="annotated.html"><span>数据结构</span></a></li>
      <li><a href="files.html"><span>文件</span></a></li>
      <li id="searchli">
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="搜索" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#define-members">宏定义</a> &#124;
<a href="#func-members">函数</a>  </div>
  <div class="headertitle">
<h1>双端线形序表</h1>  </div>
<div class="ingroups"><a class="el" href="group___xE9_xA1_xBA_xE5_xBA_x8F_xE8_xA1_xA8.html">顺序表</a></div></div>
<div class="contents">
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="define-members"></a>
宏定义</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda">dlseq_iter</a>(type)&#160;&#160;&#160;type *</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">定义type类型迭代器  <a href="#gaa9af64320d2e9425bd7bdd61b1911dda"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga3437c799d3e0d406d09c5ca77229df31">dlseq_head</a>(type)&#160;&#160;&#160;struct { type * first; type * last; type * end; type * base; }</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">type类型表头  <a href="#ga3437c799d3e0d406d09c5ca77229df31"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae82111648a741688ce3924aafdd5494f">dlseq</a>&#160;&#160;&#160;dlseq_head</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">同dlseq_head  <a href="#gae82111648a741688ce3924aafdd5494f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa216302ea43c71dc4805b478885559f4">DLSEQ_HEAD</a>(type, name, arr)&#160;&#160;&#160;dlseq_head(type) name = {arr, arr, &amp;arr[count_of(arr)], arr}</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">定义一个名为name的表头，并对其初始化  <a href="#gaa216302ea43c71dc4805b478885559f4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac7d0810e0d8768918cba80c88652a262">DLSEQ</a>&#160;&#160;&#160;DLSEQ_HEAD</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">同DLSEQ_HEAD  <a href="#gac7d0810e0d8768918cba80c88652a262"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaf69ab959476f5ca5a5ed257f00403cea">dlseq_pr1</a>(type)&#160;&#160;&#160;int (*)(type *)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">单参数回调函数指针类型  <a href="#gaf69ab959476f5ca5a5ed257f00403cea"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae8922449d1b0a688414b4e9ce517e152">dlseq_pr2</a>(type)&#160;&#160;&#160;int (*)(type *, type *)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">双参数回调函数指针类型  <a href="#gae8922449d1b0a688414b4e9ce517e152"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab03ca90ffa81b6e8a318f85afcaa7804"></a><!-- doxytag: member="双端线形序表::DLSEQ_CHECK_PASS" ref="gab03ca90ffa81b6e8a318f85afcaa7804" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>DLSEQ_CHECK_PASS</b>&#160;&#160;&#160;0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf4e557a7fcfd1ed3dc9819cd328289a1"></a><!-- doxytag: member="双端线形序表::DLSEQ_CHECK_INVALID" ref="gaf4e557a7fcfd1ed3dc9819cd328289a1" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>DLSEQ_CHECK_INVALID</b>&#160;&#160;&#160;1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga37ec750e10b0d0d8fa84cfe32339f152"></a><!-- doxytag: member="双端线形序表::DLSEQ_CHECK_OVERFLOW" ref="ga37ec750e10b0d0d8fa84cfe32339f152" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>DLSEQ_CHECK_OVERFLOW</b>&#160;&#160;&#160;2</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga445d19b93a297685508fa4c4440e633e">dlseq_check</a>(head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">检查表  <a href="#ga445d19b93a297685508fa4c4440e633e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga76d23d6cbe36669ffdd7319e48ca6f14">dlseq_reset</a>(head, _base, _first, _last, _end)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">重置表头  <a href="#ga76d23d6cbe36669ffdd7319e48ca6f14"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga3cc1579b04bc1c6992a481f176a1feab">dlseq_init</a>(type, head, base, size, _first)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">初始化表  <a href="#ga3cc1579b04bc1c6992a481f176a1feab"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gabf5ed6c58292209957b42e4d48c2d1a1">dlseq_init_serial</a>(type, head, base, size, cnt)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">作为序列来初始化表  <a href="#gabf5ed6c58292209957b42e4d48c2d1a1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga889a2f601d1d09072124ef08ddc584e6">DLSEQ_INIT</a>(type, head, arr, _first)&#160;&#160;&#160;dlseq_init(type, head, arr, count_of(arr), _first)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">初始化表  <a href="#ga889a2f601d1d09072124ef08ddc584e6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab10a512399502928d8663659815ebaea">DLSEQ_INIT_SERIAL</a>(type, head, arr, cnt)&#160;&#160;&#160;dlseq_init_serial(type, head, arr, count_of(arr), cnt)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">初始化序列  <a href="#gab10a512399502928d8663659815ebaea"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac0cde607f5cd2c7c915763b5bf554036">dlseq_clear</a>(head)&#160;&#160;&#160;((head)-&gt;last = (head)-&gt;first = (head)-&gt;base)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">清空表  <a href="#gac0cde607f5cd2c7c915763b5bf554036"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga484f9e8336a526af76143a85170165a7">dlseq_base</a>(head)&#160;&#160;&#160;((head)-&gt;base)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获得表的缓存基址  <a href="#ga484f9e8336a526af76143a85170165a7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0fcd66f91e5863d48fb4730721655885">dlseq_count</a>(head)&#160;&#160;&#160;((size_t)((head)-&gt;last - (head)-&gt;first))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取表的节点总数  <a href="#ga0fcd66f91e5863d48fb4730721655885"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2be894336225299ffb21b4c3e79213ac">dlseq_size</a>(head)&#160;&#160;&#160;((size_t)((head)-&gt;end - (head)-&gt;base))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取表的缓存长度  <a href="#ga2be894336225299ffb21b4c3e79213ac"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga68218badfdc550c54b6b6911cc67ff2e">dlseq_capacity</a>(head)&#160;&#160;&#160;dlseq_size(head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取表的节点容量  <a href="#ga68218badfdc550c54b6b6911cc67ff2e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga093081eb99a26f23856a62408d5b1afd">dlseq_remain</a>(head)&#160;&#160;&#160;(dlseq_size(head) - dlseq_count(head))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取表的剩余容量  <a href="#ga093081eb99a26f23856a62408d5b1afd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa98669095b34719d99d6ea02df035866">dlseq_front_remain</a>(head)&#160;&#160;&#160;((size_t)((head)-&gt;first - (head)-&gt;base))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取表的首部剩余容量  <a href="#gaa98669095b34719d99d6ea02df035866"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga3c099faa672dbfa60c279736e5c99468">dlseq_back_remain</a>(head)&#160;&#160;&#160;((size_t)((head)-&gt;end - (head)-&gt;last))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取表的尾部剩余容量  <a href="#ga3c099faa672dbfa60c279736e5c99468"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga3ff49337827821b5c85223648b9cdb5d">dlseq_empty</a>(head)&#160;&#160;&#160;((head)-&gt;first &gt;= (head)-&gt;last)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否为空  <a href="#ga3ff49337827821b5c85223648b9cdb5d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a3ba80c90026c606c80382c4aafdcfb">dlseq_full</a>(head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否已满  <a href="#ga7a3ba80c90026c606c80382c4aafdcfb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga770435a02333a6ec38a68feb239ce2c1">dlseq_singular</a>(head)&#160;&#160;&#160;((head)-&gt;last == ((head)-&gt;first + 1))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否只有单个节点  <a href="#ga770435a02333a6ec38a68feb239ce2c1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8de169a8b75e0224c0165711ca292a86">dlseq_sortable</a>(head)&#160;&#160;&#160;((head)-&gt;last &gt; ((head)-&gt;first + 1))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否可以被排序  <a href="#ga8de169a8b75e0224c0165711ca292a86"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga875099205528c98db45f9b1aeeb9447b">dlseq_insertable</a>(head, cnt)&#160;&#160;&#160;(dlseq_size(head) &gt;= (dlseq_count(head) + (cnt)))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否可以插入一定数量的节点  <a href="#ga875099205528c98db45f9b1aeeb9447b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad422c134a4ced1d538b07e6298bc6e2c">dlseq_serialable</a>(head)&#160;&#160;&#160;((head)-&gt;last &gt; (head)-&gt;first)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否可以序列化  <a href="#gad422c134a4ced1d538b07e6298bc6e2c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad547e1522c3eab4845970c2cb2ff8ec1">dlseq_copyable</a>(dst, src)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断源表是否可以深拷贝到目标表  <a href="#gad547e1522c3eab4845970c2cb2ff8ec1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad1795ff276106c853f99d2d07cc56f55">dlseq_at</a>(head, index)&#160;&#160;&#160;((head)-&gt;first + (index))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">根据正向索引获取迭代器  <a href="#gad1795ff276106c853f99d2d07cc56f55"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaf6cbffa09f64b0f662d7aec3388a6181">dlseq_reverse_at</a>(head, index)&#160;&#160;&#160;((head)-&gt;last - ((index) + 1))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">根据逆向索引获取迭代器  <a href="#gaf6cbffa09f64b0f662d7aec3388a6181"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gadf3fc42eed9528f855e6177475a000cc">dlseq_index_of</a>(head, itr)&#160;&#160;&#160;((itr) - (head)-&gt;first)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取迭代器对应的正向索引  <a href="#gadf3fc42eed9528f855e6177475a000cc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8b69fd9bf58887771467282d840fff39">dlseq_reverse_index_of</a>(head, itr)&#160;&#160;&#160;((head)-&gt;last - ((itr) + 1))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取迭代器对应的逆向索引  <a href="#ga8b69fd9bf58887771467282d840fff39"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7459e680b7dff4ea06a41e6d1a72d8e3">dlseq_exist</a>(head, itr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断迭代器对应的节点是否存在于表中  <a href="#ga7459e680b7dff4ea06a41e6d1a72d8e3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac00cf6a77aa59cf460e06270212b6aec">dlseq_distance</a>(first, last)&#160;&#160;&#160;((size_t)((last) - (first)) + 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">计算两个节点的迭代距离  <a href="#gac00cf6a77aa59cf460e06270212b6aec"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2f78c1229cdf3f7d3c294fc0927fe307">dlseq_insert</a>(type, head, pos, newly)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">在指定位置插入节点  <a href="#ga2f78c1229cdf3f7d3c294fc0927fe307"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2a6d392893da6b1cd4fc77aba5f698b8">dlseq_erase</a>(type, head, pos)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">删除指定位置的节点  <a href="#ga2a6d392893da6b1cd4fc77aba5f698b8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga301222520cc0fbbc628a7f5459d6d677">dlseq_inserts</a>(type, head, pos, src, cnt)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">在指定位置连续插入多个节点  <a href="#ga301222520cc0fbbc628a7f5459d6d677"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga13b81f9dcaa7ff0b0592d56d28814760">dlseq_erases</a>(type, head, _begin, _end)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">连续删除指定位置的多个节点  <a href="#ga13b81f9dcaa7ff0b0592d56d28814760"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaac57c5095ae4294fe288ad938fac61d4">dlseq_splice</a>(type, dst, pos, src, _first, _last)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">移接一段序列[first, last]到目标位置。 这可以发生在同一个序表中，也可以在不同的序表之间  <a href="#gaac57c5095ae4294fe288ad938fac61d4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab676285a57db869dccb71427c0654794">dlseq_appends</a>(type, head, src, cnt)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">在表尾添加多个节点  <a href="#gab676285a57db869dccb71427c0654794"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga80ce7977d2edd851be98ded3c8390030">dlseq_append</a>(head, newly)&#160;&#160;&#160;(*((head)-&gt;last++) = (newly))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">在表尾添加新节点  <a href="#ga80ce7977d2edd851be98ded3c8390030"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac5a831831e84c67739553b3de4e252d9">dlseq_copy</a>(type, dst, src)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">深拷贝源表的节点到目标表  <a href="#gac5a831831e84c67739553b3de4e252d9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga1ffc7ba150c4254c36b1bceb1f3e0ba3">dlseq_push_front</a>(head)&#160;&#160;&#160;(--(head)-&gt;first)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取指向表首插入节点位置的迭代器  <a href="#ga1ffc7ba150c4254c36b1bceb1f3e0ba3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga65bbbab96c82c62d05b0412cb2c263a1">dlseq_push_back</a>(head)&#160;&#160;&#160;((head)-&gt;last++)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取指向表尾插入节点位置的迭代器  <a href="#ga65bbbab96c82c62d05b0412cb2c263a1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac73e9d7e34f9441d1a0c9f85dfc8ca65">dlseq_pop_front</a>(head)&#160;&#160;&#160;((head)-&gt;first++)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取指向表首节点位置的迭代器  <a href="#gac73e9d7e34f9441d1a0c9f85dfc8ca65"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga359a8bae60736d1abd3211cb526cb295">dlseq_pop_back</a>(head)&#160;&#160;&#160;(--(head)-&gt;last)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取指向表尾节点位置的迭代器  <a href="#ga359a8bae60736d1abd3211cb526cb295"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga47b7a737affe0b4d4254330362a639d3">dlseq_iter_replace</a>(victim, newly)&#160;&#160;&#160;(*(victim) = (newly))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">用新节点替换目标节点  <a href="#ga47b7a737affe0b4d4254330362a639d3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>__dlseq_iter_swap</b>(type, a, b)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaf1ec6d8c982f4c3b3bf9a774f3556d83">dlseq_iter_swap</a>(type, a, b)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">用新节点替换目标节点  <a href="#gaf1ec6d8c982f4c3b3bf9a774f3556d83"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga93f49440956f625d85ecd6c56a6a557b">dlseq_replace</a>(victim, newly)&#160;&#160;&#160;(*(victim) = *(newly))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">用新表头替换目标表头  <a href="#ga93f49440956f625d85ecd6c56a6a557b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga3b6c7e04f4f0b4f09a2dfd96cdbd2f48">dlseq_swap</a>(type, a, b)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">交换两个表头  <a href="#ga3b6c7e04f4f0b4f09a2dfd96cdbd2f48"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga75e1528caa8626fb419cca8dc20cdf92">dlseq_front</a>(head)&#160;&#160;&#160;((head)-&gt;first)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到表首节点  <a href="#ga75e1528caa8626fb419cca8dc20cdf92"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga32ba395611eaf4595297f01765cc46b3">dlseq_back</a>(head)&#160;&#160;&#160;((head)-&gt;last - 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到表首节点  <a href="#ga32ba395611eaf4595297f01765cc46b3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga6474f4beeadeb8b3be6baa1a375a16ed">dlseq_begin</a>(head)&#160;&#160;&#160;dlseq_front(head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到指向正向起始位置的迭代器  <a href="#ga6474f4beeadeb8b3be6baa1a375a16ed"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8df3a77782b4f5626a1e3a8c6f0aa18d">dlseq_end</a>(head)&#160;&#160;&#160;((head)-&gt;last)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到指向正向终止位置的迭代器  <a href="#ga8df3a77782b4f5626a1e3a8c6f0aa18d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad46f419b47937396e808b278b799c9a1">dlseq_end_of</a>(itr)&#160;&#160;&#160;((itr) + 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到指向当前节点的正向终止位置的迭代器  <a href="#gad46f419b47937396e808b278b799c9a1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8985a9f0fe4e6ad0604812db85008bf5">dlseq_rbegin</a>(head)&#160;&#160;&#160;dlseq_back(head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到指向逆向起始位置的迭代器  <a href="#ga8985a9f0fe4e6ad0604812db85008bf5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gacddec11d890f47536009ac2c4a4be320">dlseq_rend</a>(head)&#160;&#160;&#160;((head)-&gt;first - 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到指向逆向起始位置的迭代器  <a href="#gacddec11d890f47536009ac2c4a4be320"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae4d086dbf72b7d1a1e5a3e60bf1240c5">dlseq_rend_of</a>(itr)&#160;&#160;&#160;((itr) - 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到指向当前节点的逆向终止位置的迭代器  <a href="#gae4d086dbf72b7d1a1e5a3e60bf1240c5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9ce07f7c9c2517cc61557bb9ee5d1248">dlseq_next</a>(itr)&#160;&#160;&#160;((itr) + 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取当前节点的后继节点  <a href="#ga9ce07f7c9c2517cc61557bb9ee5d1248"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga333294fd96e85f7314e6f6cc7e5f9d82">dlseq_prev</a>(itr)&#160;&#160;&#160;((itr) - 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取当前节点的前驱节点  <a href="#ga333294fd96e85f7314e6f6cc7e5f9d82"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8d6b85ec3412d57a90c7af5282a7bfd6">dlseq_advance</a>(cur, dist)&#160;&#160;&#160;((cur) + (dist))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">给迭代器增加一段距离或减小一段距离  <a href="#ga8d6b85ec3412d57a90c7af5282a7bfd6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga643c9d33c7a1ac060d44dda56ae11c4f">DLSEQ_NOT_END</a>(itr, end)&#160;&#160;&#160;((itr) &lt; (end))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代结束条件  <a href="#ga643c9d33c7a1ac060d44dda56ae11c4f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga51fa2c1938f25c3658d8bbd5c75f9c9b">DLSEQ_NOT_REND</a>(itr, rend)&#160;&#160;&#160;((itr) &gt; (rend))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">逆向迭代结束条件  <a href="#ga51fa2c1938f25c3658d8bbd5c75f9c9b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga01ab03ece963941926de7996cdb7f1c0">dlseq_inc</a>(itr)&#160;&#160;&#160;(++(itr))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器递增  <a href="#ga01ab03ece963941926de7996cdb7f1c0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga37f4f964e40c0127fe53f972c1ce3564">dlseq_dec</a>(itr)&#160;&#160;&#160;(--(itr))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器递减  <a href="#ga37f4f964e40c0127fe53f972c1ce3564"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa6bb2aa8b6e1b9eecba00c50135fc17b">dlseq_add</a>(itr, cnt)&#160;&#160;&#160;((itr) += (cnt))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器增加  <a href="#gaa6bb2aa8b6e1b9eecba00c50135fc17b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga387e19749450fd5d184daa1fa55f616e">dlseq_sub</a>(itr, cnt)&#160;&#160;&#160;((itr) -= (cnt))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器减小  <a href="#ga387e19749450fd5d184daa1fa55f616e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5ac7e6ad6068260172a91d0cdd6409d0">dlseq_inc_later</a>(itr)&#160;&#160;&#160;((itr)++)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器后递增  <a href="#ga5ac7e6ad6068260172a91d0cdd6409d0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad5280822494b200f031a16a1312505b2">dlseq_dec_later</a>(itr)&#160;&#160;&#160;((itr)--)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器后递减  <a href="#gad5280822494b200f031a16a1312505b2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga6c72b56a6426b9cca6aa338282809b5a">dlseq_add_later</a>(itr, cnt)&#160;&#160;&#160;(dlseq_add(itr, cnt) - (cnt))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器后增加  <a href="#ga6c72b56a6426b9cca6aa338282809b5a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga892a66d0a679113f3959bdc30528c218">dlseq_sub_later</a>(itr, cnt)&#160;&#160;&#160;(dlseq_sub(itr, cnt) + (cnt))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器后减少  <a href="#ga892a66d0a679113f3959bdc30528c218"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga831b9c1bcf432adf5a9856f0415464f0">dlseq_foreach</a>(type, begin, end, fn)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">正向遍历begin到end的节点， 并为每一个节点调用回调函数或宏  <a href="#ga831b9c1bcf432adf5a9856f0415464f0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad4ff379776899de6d39d9aa14fe34993">dlseq_reverse_foreach</a>(type, rbegin, rend, fn)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">逆向遍历rbegin到rend的节点， 并为每一个节点调用回调函数或宏  <a href="#gad4ff379776899de6d39d9aa14fe34993"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga39a31078b854331a7545bf39fca28e1c">dlseq_search</a>(type, begin, end, equal, var, res)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">顺序查找区域内的指定节点  <a href="#ga39a31078b854331a7545bf39fca28e1c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga1ca62ed17125c8f59557e1b970fd4d45">dlseq_binary_search</a>(type, begin, end, greater, var, res)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">二分查找区域内的指定节点  <a href="#ga1ca62ed17125c8f59557e1b970fd4d45"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga678f3f705968d3f7d63ad6dae67c1a3e">dlseq_vbegin</a>(head)&#160;&#160;&#160;dlseq_begin(head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到正反转的起始迭代器  <a href="#ga678f3f705968d3f7d63ad6dae67c1a3e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9da7efbb8d187840982f9dcb8cdd6813">dlseq_rvbegin</a>(head)&#160;&#160;&#160;dlseq_rbegin(head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到逆反转的起始迭代器  <a href="#ga9da7efbb8d187840982f9dcb8cdd6813"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga76ba6e93e9250c4f760cdb428c1f9b66">dlseq_vend</a>(head)&#160;&#160;&#160;((head)-&gt;first + (dlseq_count(head) &gt;&gt; 1))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到用于反转的终止位置的迭代器  <a href="#ga76ba6e93e9250c4f760cdb428c1f9b66"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafa2050bc44614406748ffe33c6ac9a8e"></a><!-- doxytag: member="双端线形序表::dlseq_vnext" ref="gafa2050bc44614406748ffe33c6ac9a8e" args="(i, r)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>dlseq_vnext</b>(i, r)&#160;&#160;&#160;do { ++(i); --(r); } while (0)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaf4891f2fccdd0ceed3bc3051f54951c6">dlseq_vswap</a>(type, i, r)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">交换反转操作  <a href="#gaf4891f2fccdd0ceed3bc3051f54951c6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga4f45f7c4d2ebabb744fbaab175f4128b">dlseq_reverse</a>(type, head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">反转表  <a href="#ga4f45f7c4d2ebabb744fbaab175f4128b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga01367e1ec99347d055599c797fb484cd">dlseq_serialize</a>(type, head, buf)&#160;&#160;&#160;memcpy(buf, (head)-&gt;first, sizeof(type) * dlseq_count(head))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">序列化  <a href="#ga01367e1ec99347d055599c797fb484cd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga311df7cdf33e89ae2888408ac946827b">dlseq_fill</a>(type, begin, end, val)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">用val填充区域  <a href="#ga311df7cdf33e89ae2888408ac946827b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae59f3e47930b766b879c7b29d0f2218e">dlseq_generate</a>(type, begin, end, generator)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">使用输入产生器来填充区域  <a href="#gae59f3e47930b766b879c7b29d0f2218e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa7b9575d98c17fcde6612f91f79b953b">dlseq_is_heap</a>(type, begin, end, greater, res)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断区域是否是一个最大堆  <a href="#gaa7b9575d98c17fcde6612f91f79b953b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacf5d0d361eced90bf9bb1bac269f8d0f"></a><!-- doxytag: member="双端线形序表::__dlseq_ret_gt" ref="gacf5d0d361eced90bf9bb1bac269f8d0f" args="(i, j, r, greater)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>__dlseq_ret_gt</b>(i, j, r, greater)&#160;&#160;&#160;if (greater((i), (j))) { (r) = 0; break; } ++(i)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga54a2e34c3ae32b16f143a305d6e52931">dlseq_push_heap</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">将区域最后一个节点插入到堆中  <a href="#ga54a2e34c3ae32b16f143a305d6e52931"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga62bf84e92b19a7191b1337f9698b525a">dlseq_pop_heap</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">弹出区域中堆的顶点节点  <a href="#ga62bf84e92b19a7191b1337f9698b525a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>__dlseq_adjust_heap</b>(type, base, first, last, greater)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gafd902927efafe9ca45985b21a6097284">dlseq_make_heap</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">将一段区域建立成最大堆  <a href="#gafd902927efafe9ca45985b21a6097284"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaeed9eecdd875ae3bae1e27ca01de5cd7">dlseq_sort_heap</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">对最大堆进行排序  <a href="#gaeed9eecdd875ae3bae1e27ca01de5cd7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9777d7ab606e4f51bbdbf972da459396">dlseq_shuffle</a>(type, begin, end, _RAND)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">对区域内的节点进行随机排列  <a href="#ga9777d7ab606e4f51bbdbf972da459396"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga4aed9d38a685cd50a50a146b80c906d9">dlseq_sort_insert</a>(type, head, begin, end, newly, greater_equal)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">按序插入  <a href="#ga4aed9d38a685cd50a50a146b80c906d9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0e70efb40f7d7cc678af7150990a2abb">dlseq_is_sorted</a>(type, begin, end, greater_equal, res)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断区域是否是已排序的  <a href="#ga0e70efb40f7d7cc678af7150990a2abb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2277c5ed79931683f4e900a5b0a6db47">dlseq_bubble_sort</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">冒泡排序  <a href="#ga2277c5ed79931683f4e900a5b0a6db47"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab39a605aa355fd3dff3e38cc5b02fc9e">dlseq_oddeven_sort</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">奇偶排序  <a href="#gab39a605aa355fd3dff3e38cc5b02fc9e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>__dlseq_oddeven_scan</b>(start, type, greater)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gabddc64a8dc69455900d3e1b359f4df46">dlseq_cocktail_sort</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">鸡尾酒排序  <a href="#gabddc64a8dc69455900d3e1b359f4df46"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae89fb9dc0c9a16ec88160cf6d5b7584a">dlseq_comb_sort</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">梳子排序  <a href="#gae89fb9dc0c9a16ec88160cf6d5b7584a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab0b9b9efee02a2040aeef78b2a4f8b00">dlseq_select_sort</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">选择排序  <a href="#gab0b9b9efee02a2040aeef78b2a4f8b00"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gade71f93f6b1deea1b17f5b15ef2da6e0">dlseq_insert_sort</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">插入排序  <a href="#gade71f93f6b1deea1b17f5b15ef2da6e0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae061eca6e3a36bc7fb8b3e19cc3c2c0a">dlseq_shell_sort</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">希尔排序  <a href="#gae061eca6e3a36bc7fb8b3e19cc3c2c0a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0e81257e6808089aea04c746c3b14b0b">COUNTING_SIZE</a>(_min, _max)&#160;&#160;&#160;((_max) - (_min) + 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">计数排序计数缓存大小  <a href="#ga0e81257e6808089aea04c746c3b14b0b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gabe56db9f8a1c3e4e29a31b7597b9b59e">PIGEONHOLE_SIZE</a>(_max)&#160;&#160;&#160;((_max) + 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">鸽巢排序计数缓存大小  <a href="#gabe56db9f8a1c3e4e29a31b7597b9b59e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0b0c8c04814080521e5951cc3cb293b7">dlseq_counting_sort</a>(type, begin, end, hole, _min, _max)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">计数排序  <a href="#ga0b0c8c04814080521e5951cc3cb293b7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad3c68c03522faaa7f7be96cd94aaf62a">dlseq_pigeonhole_sort</a>(type, begin, end, hole, _max)&#160;&#160;&#160;dlseq_counting_sort(type, begin, end, hole, 0, _max)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">鸽巢排序  <a href="#gad3c68c03522faaa7f7be96cd94aaf62a"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
函数</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga8bb333721012c718ede931ddd3c03263"></a><!-- doxytag: member="双端线形序表::__dlseq_check" ref="ga8bb333721012c718ede931ddd3c03263" args="(char *first, char *last, char *end, char *base)" -->
static int&#160;</td><td class="memItemRight" valign="bottom"><b>__dlseq_check</b> (char *first, char *last, char *end, char *base)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4c77c3c40731afed3f4e886b4da47673"></a><!-- doxytag: member="双端线形序表::__dlseq_copyable" ref="ga4c77c3c40731afed3f4e886b4da47673" args="(char *dst, char *src, char *s_first, char *s_last, char *d_base, char *d_end)" -->
static int&#160;</td><td class="memItemRight" valign="bottom"><b>__dlseq_copyable</b> (char *dst, char *src, char *s_first, char *s_last, char *d_base, char *d_end)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab07f8126fe670264331efe3fb53d7f65"></a><!-- doxytag: member="双端线形序表::__dlseq_exist" ref="gab07f8126fe670264331efe3fb53d7f65" args="(char *first, char *last, char *itr)" -->
static int&#160;</td><td class="memItemRight" valign="bottom"><b>__dlseq_exist</b> (char *first, char *last, char *itr)</td></tr>
</table>
<hr/><h2>宏定义文档</h2>
<a class="anchor" id="gaa9af64320d2e9425bd7bdd61b1911dda"></a><!-- doxytag: member="dlseq.h::dlseq_iter" ref="gaa9af64320d2e9425bd7bdd61b1911dda" args="(type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_iter</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type</td><td>)</td>
          <td>&#160;&#160;&#160;type *</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>定义type类型迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>节点类型 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00038">38</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga3437c799d3e0d406d09c5ca77229df31"></a><!-- doxytag: member="dlseq.h::dlseq_head" ref="ga3437c799d3e0d406d09c5ca77229df31" args="(type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_head</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type</td><td>)</td>
          <td>&#160;&#160;&#160;struct { type * first; type * last; type * end; type * base; }</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>type类型表头 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>节点类型 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>first为缓存基地址， last为末尾节点(末尾节点是空的)， end是缓存末尾 </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00051">51</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae82111648a741688ce3924aafdd5494f"></a><!-- doxytag: member="dlseq.h::dlseq" ref="gae82111648a741688ce3924aafdd5494f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq&#160;&#160;&#160;dlseq_head</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>同dlseq_head </p>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga3437c799d3e0d406d09c5ca77229df31" title="type类型表头">dlseq_head</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00053">53</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaa216302ea43c71dc4805b478885559f4"></a><!-- doxytag: member="dlseq.h::DLSEQ_HEAD" ref="gaa216302ea43c71dc4805b478885559f4" args="(type, name, arr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DLSEQ_HEAD</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">arr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;dlseq_head(type) name = {arr, arr, &amp;arr[count_of(arr)], arr}</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>定义一个名为name的表头，并对其初始化 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramname">name</td><td>表头名称 </td></tr>
    <tr><td class="paramname">arr</td><td>缓存数组名 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00065">65</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gac7d0810e0d8768918cba80c88652a262"></a><!-- doxytag: member="dlseq.h::DLSEQ" ref="gac7d0810e0d8768918cba80c88652a262" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DLSEQ&#160;&#160;&#160;DLSEQ_HEAD</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>同DLSEQ_HEAD </p>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa216302ea43c71dc4805b478885559f4" title="定义一个名为name的表头，并对其初始化">DLSEQ_HEAD</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00067">67</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaf69ab959476f5ca5a5ed257f00403cea"></a><!-- doxytag: member="dlseq.h::dlseq_pr1" ref="gaf69ab959476f5ca5a5ed257f00403cea" args="(type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_pr1</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type</td><td>)</td>
          <td>&#160;&#160;&#160;int (*)(type *)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>单参数回调函数指针类型 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>节点类型 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00077">77</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae8922449d1b0a688414b4e9ce517e152"></a><!-- doxytag: member="dlseq.h::dlseq_pr2" ref="gae8922449d1b0a688414b4e9ce517e152" args="(type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_pr2</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type</td><td>)</td>
          <td>&#160;&#160;&#160;int (*)(type *, type *)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>双参数回调函数指针类型 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>节点类型 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00078">78</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga445d19b93a297685508fa4c4440e633e"></a><!-- doxytag: member="dlseq.h::dlseq_check" ref="ga445d19b93a297685508fa4c4440e633e" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_check</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment">__dlseq_check((<span class="keywordtype">char</span>*)((head)-&gt;first),   \
                  (<span class="keywordtype">char</span>*)((head)-&gt;last),    \
                  (<span class="keywordtype">char</span>*)((head)-&gt;end),     \
                  (<span class="keywordtype">char</span>*)((head)-&gt;base))
</pre></div>
<p>检查表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">DLSEQ_CHECK_PASS</td><td>0 正常 </td></tr>
    <tr><td class="paramname">DLSEQ_CHECK_INVALID</td><td>1 无效缓存 </td></tr>
    <tr><td class="paramname">DLSEQ_CHECK_OVERFLOW</td><td>2 溢出 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00104">104</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga76d23d6cbe36669ffdd7319e48ca6f14"></a><!-- doxytag: member="dlseq.h::dlseq_reset" ref="ga76d23d6cbe36669ffdd7319e48ca6f14" args="(head, _base, _first, _last, _end)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_reset</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_base, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_first, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_last, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {(head)-&gt;base = (_base);         \
        (head)-&gt;first = (_first);       \
        (head)-&gt;last = (_last);         \
        (head)-&gt;end = (_end);           \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>重置表头 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">head</td><td>目标表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_base</td><td>缓存基址 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_first</td><td>表首节点 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_last</td><td>表尾节点 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_end</td><td>缓存终止处 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00119">119</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga3cc1579b04bc1c6992a481f176a1feab"></a><!-- doxytag: member="dlseq.h::dlseq_init" ref="ga3cc1579b04bc1c6992a481f176a1feab" args="(type, head, base, size, _first)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_init</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">base, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">size, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_first&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga76d23d6cbe36669ffdd7319e48ca6f14" title="重置表头">dlseq_reset</a>(head, (type *)(base),               \
                (type *)(base) + (_first),          \
                (type *)(base) + (_first),          \
                (type *)(base) + (size))            \
</pre></div>
<p>初始化表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">head</td><td>目标表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>缓存基址 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>缓存长度(节点容量) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_first</td><td>起始位置 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga889a2f601d1d09072124ef08ddc584e6" title="初始化表">DLSEQ_INIT</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00136">136</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gabf5ed6c58292209957b42e4d48c2d1a1"></a><!-- doxytag: member="dlseq.h::dlseq_init_serial" ref="gabf5ed6c58292209957b42e4d48c2d1a1" args="(type, head, base, size, cnt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_init_serial</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">base, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">size, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga76d23d6cbe36669ffdd7319e48ca6f14" title="重置表头">dlseq_reset</a>(head, (type *)(base), (type *)(base),   \
                (type *)(base) + (cnt),                 \
                (type *)(base) + (size))
</pre></div>
<p>作为序列来初始化表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">head</td><td>目标表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>缓存基址 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>缓存长度(节点容量) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>序列长度 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">//将dclnk链表通过序列化来进行堆排序</span>
    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_head</a>* alives = &amp;bulltes.alive_list;
    <span class="keywordflow">if</span> (<a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga625abc40f57fd4e8c00e9b64fa095435" title="判断表是否可以排序">dclnk_sortable</a>(alives)) {
        Bullet* buf[MAX_BULLETS];
        <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab10a512399502928d8663659815ebaea" title="初始化序列">DLSEQ_INIT_SERIAL</a>(<span class="keywordtype">int</span>, &amp;seq_head, buf, list_cnt);
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4c8e23b2ed6f6855d4c43b02c0036e12" title="表的序列化">dclnk_serialize</a>(alives, buf, Bullet, alive_node);
        <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gafd902927efafe9ca45985b21a6097284" title="将一段区域建立成最大堆">dlseq_make_heap</a>(Bullet, <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga6474f4beeadeb8b3be6baa1a375a16ed" title="得到指向正向起始位置的迭代器">dlseq_begin</a>(&amp;head),
                        <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8df3a77782b4f5626a1e3a8c6f0aa18d" title="得到指向正向终止位置的迭代器">dlseq_end</a>(&amp;seq_head),
                        CompareBulletAlive);
        <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaeed9eecdd875ae3bae1e27ca01de5cd7" title="对最大堆进行排序">dlseq_sort_heap</a>(Bullet, <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga6474f4beeadeb8b3be6baa1a375a16ed" title="得到指向正向起始位置的迭代器">dlseq_begin</a>(&amp;head),
                        <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8df3a77782b4f5626a1e3a8c6f0aa18d" title="得到指向正向终止位置的迭代器">dlseq_end</a>(&amp;seq_head),
                        CompareBulletAlive);
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae8cc4e2839f2cef62d6fb8925f271308" title="表的反序列化">dclnk_deserialize</a>(alives, <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga484f9e8336a526af76143a85170165a7" title="获得表的缓存基址">dlseq_base</a>(&amp;seq_head),
                        <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0fcd66f91e5863d48fb4730721655885" title="获取表的节点总数">dlseq_count</a>(&amp;seq_head),
                        Bullet, alive_node);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab10a512399502928d8663659815ebaea" title="初始化序列">DLSEQ_INIT_SERIAL</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00171">171</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga889a2f601d1d09072124ef08ddc584e6"></a><!-- doxytag: member="dlseq.h::DLSEQ_INIT" ref="ga889a2f601d1d09072124ef08ddc584e6" args="(type, head, arr, _first)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DLSEQ_INIT</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">arr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_first&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;dlseq_init(type, head, arr, count_of(arr), _first)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>初始化表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">head</td><td>目标表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">arr</td><td>缓存数组 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_first</td><td>起始位置 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga3437c799d3e0d406d09c5ca77229df31" title="type类型表头">dlseq_head</a>(<span class="keywordtype">int</span>) h;
    <span class="keywordtype">int</span> buf[100];

    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga889a2f601d1d09072124ef08ddc584e6" title="初始化表">DLSEQ_INIT</a>(<span class="keywordtype">int</span>, &amp;h, buf, 0);
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga3cc1579b04bc1c6992a481f176a1feab" title="初始化表">dlseq_init</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00207">207</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gab10a512399502928d8663659815ebaea"></a><!-- doxytag: member="dlseq.h::DLSEQ_INIT_SERIAL" ref="gab10a512399502928d8663659815ebaea" args="(type, head, arr, cnt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DLSEQ_INIT_SERIAL</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">arr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;dlseq_init_serial(type, head, arr, count_of(arr), cnt)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>初始化序列 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">head</td><td>目标表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">arr</td><td>缓存数组 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>序列长度 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga3437c799d3e0d406d09c5ca77229df31" title="type类型表头">dlseq_head</a>(DATA*) h;
    DATA* buf[100];

    <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4c8e23b2ed6f6855d4c43b02c0036e12" title="表的序列化">dclnk_serialize</a>(&amp;lst, buf, DATA, node);
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab10a512399502928d8663659815ebaea" title="初始化序列">DLSEQ_INIT_SERIAL</a>(<span class="keywordtype">int</span>, &amp;h, buf, <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaa4d3dc1196aa9fe3c0c044503323ac15" title="统计表的节点数量">dclnk_count</a>(&amp;lst));
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gabf5ed6c58292209957b42e4d48c2d1a1" title="作为序列来初始化表">dlseq_init_serial</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00209">209</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gac0cde607f5cd2c7c915763b5bf554036"></a><!-- doxytag: member="dlseq.h::dlseq_clear" ref="gac0cde607f5cd2c7c915763b5bf554036" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_clear</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;last = (head)-&gt;first = (head)-&gt;base)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>清空表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00217">217</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga484f9e8336a526af76143a85170165a7"></a><!-- doxytag: member="dlseq.h::dlseq_base" ref="ga484f9e8336a526af76143a85170165a7" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_base</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;base)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获得表的缓存基址 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>char* 返回基地址 </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00226">226</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga0fcd66f91e5863d48fb4730721655885"></a><!-- doxytag: member="dlseq.h::dlseq_count" ref="ga0fcd66f91e5863d48fb4730721655885" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_count</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((size_t)((head)-&gt;last - (head)-&gt;first))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取表的节点总数 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回节点总数 </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00234">234</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga2be894336225299ffb21b4c3e79213ac"></a><!-- doxytag: member="dlseq.h::dlseq_size" ref="ga2be894336225299ffb21b4c3e79213ac" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_size</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((size_t)((head)-&gt;end - (head)-&gt;base))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取表的缓存长度 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回缓存长度 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga68218badfdc550c54b6b6911cc67ff2e" title="获取表的节点容量">dlseq_capacity</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00244">244</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga68218badfdc550c54b6b6911cc67ff2e"></a><!-- doxytag: member="dlseq.h::dlseq_capacity" ref="ga68218badfdc550c54b6b6911cc67ff2e" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_capacity</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;dlseq_size(head)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取表的节点容量 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回节点容量 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2be894336225299ffb21b4c3e79213ac" title="获取表的缓存长度">dlseq_size</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00254">254</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga093081eb99a26f23856a62408d5b1afd"></a><!-- doxytag: member="dlseq.h::dlseq_remain" ref="ga093081eb99a26f23856a62408d5b1afd" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_remain</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;(dlseq_size(head) - dlseq_count(head))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取表的剩余容量 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回剩余容量 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a3ba80c90026c606c80382c4aafdcfb" title="判断表是否已满">dlseq_full</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga3ff49337827821b5c85223648b9cdb5d" title="判断表是否为空">dlseq_empty</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00263">263</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaa98669095b34719d99d6ea02df035866"></a><!-- doxytag: member="dlseq.h::dlseq_front_remain" ref="gaa98669095b34719d99d6ea02df035866" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_front_remain</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((size_t)((head)-&gt;first - (head)-&gt;base))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取表的首部剩余容量 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回剩余容量 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga3c099faa672dbfa60c279736e5c99468" title="获取表的尾部剩余容量">dlseq_back_remain</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00273">273</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga3c099faa672dbfa60c279736e5c99468"></a><!-- doxytag: member="dlseq.h::dlseq_back_remain" ref="ga3c099faa672dbfa60c279736e5c99468" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_back_remain</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((size_t)((head)-&gt;end - (head)-&gt;last))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取表的尾部剩余容量 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回剩余容量 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa98669095b34719d99d6ea02df035866" title="获取表的首部剩余容量">dlseq_front_remain</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00283">283</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga3ff49337827821b5c85223648b9cdb5d"></a><!-- doxytag: member="dlseq.h::dlseq_empty" ref="ga3ff49337827821b5c85223648b9cdb5d" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_empty</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;first &gt;= (head)-&gt;last)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否为空 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a3ba80c90026c606c80382c4aafdcfb" title="判断表是否已满">dlseq_full</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga093081eb99a26f23856a62408d5b1afd" title="获取表的剩余容量">dlseq_remain</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00295">295</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga7a3ba80c90026c606c80382c4aafdcfb"></a><!-- doxytag: member="dlseq.h::dlseq_full" ref="ga7a3ba80c90026c606c80382c4aafdcfb" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_full</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment">((head)-&gt;last &gt;= (head)-&gt;end &amp;&amp; \
     (head)-&gt;first &lt;= (head)-&gt;base)
</pre></div>
<p>判断表是否已满 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga3ff49337827821b5c85223648b9cdb5d" title="判断表是否为空">dlseq_empty</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga093081eb99a26f23856a62408d5b1afd" title="获取表的剩余容量">dlseq_remain</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00306">306</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga770435a02333a6ec38a68feb239ce2c1"></a><!-- doxytag: member="dlseq.h::dlseq_singular" ref="ga770435a02333a6ec38a68feb239ce2c1" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_singular</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;last == ((head)-&gt;first + 1))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否只有单个节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00318">318</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga8de169a8b75e0224c0165711ca292a86"></a><!-- doxytag: member="dlseq.h::dlseq_sortable" ref="ga8de169a8b75e0224c0165711ca292a86" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_sortable</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;last &gt; ((head)-&gt;first + 1))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否可以被排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00329">329</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga875099205528c98db45f9b1aeeb9447b"></a><!-- doxytag: member="dlseq.h::dlseq_insertable" ref="ga875099205528c98db45f9b1aeeb9447b" args="(head, cnt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_insertable</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(dlseq_size(head) &gt;= (dlseq_count(head) + (cnt)))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否可以插入一定数量的节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>插入的节点数 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00341">341</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gad422c134a4ced1d538b07e6298bc6e2c"></a><!-- doxytag: member="dlseq.h::dlseq_serialable" ref="gad422c134a4ced1d538b07e6298bc6e2c" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_serialable</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;last &gt; (head)-&gt;first)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否可以序列化 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00352">352</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gad547e1522c3eab4845970c2cb2ff8ec1"></a><!-- doxytag: member="dlseq.h::dlseq_copyable" ref="gad547e1522c3eab4845970c2cb2ff8ec1" args="(dst, src)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_copyable</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">dst, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">src&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment">__dlseq_copyable((<span class="keywordtype">char</span>*)(dst),              \
                     (<span class="keywordtype">char</span>*)(src),              \
                     (<span class="keywordtype">char</span>*)((src)-&gt;first),     \
                     (<span class="keywordtype">char</span>*)((src)-&gt;last),      \
                     (<span class="keywordtype">char</span>*)((dst)-&gt;base),      \
                     (<span class="keywordtype">char</span>*)((dst)-&gt;end))
</pre></div>
<p>判断源表是否可以深拷贝到目标表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">dst</td><td>目标表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>源表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00364">364</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gad1795ff276106c853f99d2d07cc56f55"></a><!-- doxytag: member="dlseq.h::dlseq_at" ref="gad1795ff276106c853f99d2d07cc56f55" args="(head, index)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_at</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">index&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((head)-&gt;first + (index))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>根据正向索引获取迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>指定索引 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回对应的迭代器 </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00386">386</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaf6cbffa09f64b0f662d7aec3388a6181"></a><!-- doxytag: member="dlseq.h::dlseq_reverse_at" ref="gaf6cbffa09f64b0f662d7aec3388a6181" args="(head, index)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_reverse_at</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">index&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((head)-&gt;last - ((index) + 1))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>根据逆向索引获取迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>指定索引 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回对应的迭代器 </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00395">395</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gadf3fc42eed9528f855e6177475a000cc"></a><!-- doxytag: member="dlseq.h::dlseq_index_of" ref="gadf3fc42eed9528f855e6177475a000cc" args="(head, itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_index_of</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((itr) - (head)-&gt;first)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取迭代器对应的正向索引 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>迭代器 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回正向索引 </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00404">404</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga8b69fd9bf58887771467282d840fff39"></a><!-- doxytag: member="dlseq.h::dlseq_reverse_index_of" ref="ga8b69fd9bf58887771467282d840fff39" args="(head, itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_reverse_index_of</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((head)-&gt;last - ((itr) + 1))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取迭代器对应的逆向索引 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>迭代器 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回逆向索引 </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00413">413</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga7459e680b7dff4ea06a41e6d1a72d8e3"></a><!-- doxytag: member="dlseq.h::dlseq_exist" ref="ga7459e680b7dff4ea06a41e6d1a72d8e3" args="(head, itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_exist</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment">__dlseq_exist((<span class="keywordtype">char</span>*)((head)-&gt;first),   \
                  (<span class="keywordtype">char</span>*)((head)-&gt;last),    \
                  (<span class="keywordtype">char</span>*)(itr))
</pre></div>
<p>判断迭代器对应的节点是否存在于表中 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>迭代器 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00425">425</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gac00cf6a77aa59cf460e06270212b6aec"></a><!-- doxytag: member="dlseq.h::dlseq_distance" ref="gac00cf6a77aa59cf460e06270212b6aec" args="(first, last)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_distance</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">first, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">last&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((size_t)((last) - (first)) + 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>计算两个节点的迭代距离 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">first</td><td>首节点 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">last</td><td>尾节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>以索引为例，2到4的距离是4 (4-2+1=3) </dd></dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回距离 </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00443">443</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga2f78c1229cdf3f7d3c294fc0927fe307"></a><!-- doxytag: member="dlseq.h::dlseq_insert" ref="ga2f78c1229cdf3f7d3c294fc0927fe307" args="(type, head, pos, newly)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_insert</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">pos, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">newly&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {   \
        type * _q_p = (pos);                        \
        type * _q_f = (head)-&gt;first;                \
        type * _q_b = (head)-&gt;base;                 \
        <span class="keywordflow">if</span> (_q_f &gt; _q_b) {                          \
            memcpy(_q_f - 1, _q_f, <span class="keyword">sizeof</span>(type) *   \
                ((_q_p--) - ((head)-&gt;first--)));    \
        } <span class="keywordflow">else</span> {                                    \
            memmove(_q_p + 1, _q_p, <span class="keyword">sizeof</span>(type) *  \
                (((head)-&gt;last++) - _q_p));          \
        }                                           \
        *_q_p = (newly);                            \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在指定位置插入节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">pos</td><td>插入位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">newly</td><td>新节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>插入完成之后，则pos迭代器失效 </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00454">454</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga2a6d392893da6b1cd4fc77aba5f698b8"></a><!-- doxytag: member="dlseq.h::dlseq_erase" ref="ga2a6d392893da6b1cd4fc77aba5f698b8" args="(type, head, pos)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_erase</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">pos&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                       \
        type * _q_p = (pos);                                    \
        type * _q_f = (head)-&gt;first;                            \
        <span class="keywordflow">if</span> (((_q_p - _q_f) &lt;&lt; 2) &lt;= ((head)-&gt;last - _q_f)) {    \
            memmove(_q_f + 1, _q_f, <span class="keyword">sizeof</span>(type) *              \
                (_q_p - ((head)-&gt;first++)));                    \
        } <span class="keywordflow">else</span> {                                                \
            memcpy(_q_p, _q_p + 1, <span class="keyword">sizeof</span>(type) *               \
                ((--(head)-&gt;last) - _q_p));                     \
        }                                                       \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>删除指定位置的节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">pos</td><td>删除位置 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00475">475</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga301222520cc0fbbc628a7f5459d6d677"></a><!-- doxytag: member="dlseq.h::dlseq_inserts" ref="ga301222520cc0fbbc628a7f5459d6d677" args="(type, head, pos, src, cnt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_inserts</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">pos, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">src, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                   \
        <span class="keywordtype">size_t</span> _q_c = (cnt);                                            \
        type * _q_p = (pos);                                            \
        type * _q_f = (head)-&gt;first;                                    \
        type * _q_b = (head)-&gt;base;                                     \
        <span class="keywordflow">if</span> (_q_f &gt;= _q_b + _q_c) {                                      \
            memcpy(_q_f - _q_c, _q_f, <span class="keyword">sizeof</span>(type) * (_q_p - _q_f));    \
            memcpy(_q_p - _q_c, src, <span class="keyword">sizeof</span>(type) * _q_c);              \
            (head)-&gt;first -= _q_c;                                      \
        } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (_q_f &gt; _q_b) {                                       \
            memcpy(_q_b, _q_f, <span class="keyword">sizeof</span>(type) * (_q_p - _q_f));           \
            memmove(_q_p + (_q_c - (_q_f - _q_b)), _q_p,                \
                <span class="keyword">sizeof</span>(type) * ((head)-&gt;last - _q_p));                  \
            memcpy(_q_p + (_q_p - _q_f), src, <span class="keyword">sizeof</span>(type) * _q_c);     \
            (head)-&gt;first = _q_b;                                       \
            (head)-&gt;last += (_q_c - (_q_f - _q_b));                     \
        } <span class="keywordflow">else</span> {                                                        \
            memmove(_q_p + _q_c, _q_p, <span class="keyword">sizeof</span>(type) *                   \
                ((head)-&gt;last - _q_p));                                 \
            memcpy(_q_p, src, <span class="keyword">sizeof</span>(type) * _q_c);                     \
            (head)-&gt;last += _q_c;                                       \
        }                                                               \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在指定位置连续插入多个节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">pos</td><td>插入位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>新节点缓存 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>新节点数 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>插入完成之后，则pos迭代器失效 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) p = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad1795ff276106c853f99d2d07cc56f55" title="根据正向索引获取迭代器">dlseq_at</a>(&amp;head, 8);
    <span class="comment">// 判断是否可以插入cnt个节点</span>
    if (<a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga875099205528c98db45f9b1aeeb9447b" title="判断表是否可以插入一定数量的节点">dlseq_insertable</a>(&amp;head, cnt)) {
        <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga301222520cc0fbbc628a7f5459d6d677" title="在指定位置连续插入多个节点">dlseq_inserts</a>(<span class="keywordtype">int</span>, &amp;head, p, buf, cnt);
    }
</pre></div> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00505">505</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga13b81f9dcaa7ff0b0592d56d28814760"></a><!-- doxytag: member="dlseq.h::dlseq_erases" ref="ga13b81f9dcaa7ff0b0592d56d28814760" args="(type, head, _begin, _end)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_erases</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {             \
        type * _q_e = (_end);                                   \
        type * _q_f = (_begin);                                 \
        <span class="keywordtype">size_t</span> _q_fr = _q_f - (head)-&gt;first;                    \
        <span class="keywordtype">size_t</span> _q_br = (head)-&gt;end - _q_e;                      \
        <span class="keywordtype">size_t</span> _q_c = _q_e - _q_f;                              \
        <span class="keywordflow">if</span> ((_q_fr &lt;&lt; 1) &lt;= _q_br) {                            \
            memmove((head)-&gt;first + _q_fr, (head)-&gt;first,       \
                <span class="keyword">sizeof</span>(type) * _q_fr);                          \
            (head)-&gt;first += _q_c;                              \
        } <span class="keywordflow">else</span> {                                                \
            memcpy(_q_e - _q_c, _q_e, <span class="keyword">sizeof</span>(type) * _q_br);    \
            (head)-&gt;last -= _q_c;                               \
        }                                                       \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>连续删除指定位置的多个节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">end</td><td>终止位置 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00537">537</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaac57c5095ae4294fe288ad938fac61d4"></a><!-- doxytag: member="dlseq.h::dlseq_splice" ref="gaac57c5095ae4294fe288ad938fac61d4" args="(type, dst, pos, src, _first, _last)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_splice</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">dst, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">pos, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">src, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_first, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_last&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {       \
        type * _q1_l = (_last);                                     \
        type * _q1_f = (_first);                                    \
        <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga301222520cc0fbbc628a7f5459d6d677" title="在指定位置连续插入多个节点">dlseq_inserts</a>(type, dst, pos, _q1_f, _q1_l - _q1_f + 1);    \
        <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga13b81f9dcaa7ff0b0592d56d28814760" title="连续删除指定位置的多个节点">dlseq_erases</a>(type, src, _q1_f, _q1_l + 1);                  \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>移接一段序列[first, last]到目标位置。 这可以发生在同一个序表中，也可以在不同的序表之间 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">dst</td><td>目标表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">pos</td><td>指定位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">src</td><td>源表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_first</td><td>起始位置，包括_first </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_last</td><td>末尾位置，包括_last </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00564">564</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gab676285a57db869dccb71427c0654794"></a><!-- doxytag: member="dlseq.h::dlseq_appends" ref="gab676285a57db869dccb71427c0654794" args="(type, head, src, cnt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_appends</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">src, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {        \
        <span class="keywordtype">size_t</span> _q_c = (cnt);                            \
        memcpy((head)-&gt;last, src, <span class="keyword">sizeof</span>(type) * _q_c); \
        (head)-&gt;last += _q_c;                           \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在表尾添加多个节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>新节点缓存 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>新节点数 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 判断是否可以插入cnt个节点</span>
    <span class="keywordflow">if</span> (<a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga875099205528c98db45f9b1aeeb9447b" title="判断表是否可以插入一定数量的节点">dlseq_insertable</a>(&amp;head, cnt)) {
        <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab676285a57db869dccb71427c0654794" title="在表尾添加多个节点">dlseq_appends</a>(<span class="keywordtype">int</span>, &amp;head, buf, cnt);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga80ce7977d2edd851be98ded3c8390030" title="在表尾添加新节点">dlseq_append</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00587">587</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga80ce7977d2edd851be98ded3c8390030"></a><!-- doxytag: member="dlseq.h::dlseq_append" ref="ga80ce7977d2edd851be98ded3c8390030" args="(head, newly)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_append</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">newly&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(*((head)-&gt;last++) = (newly))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>在表尾添加新节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">newly</td><td>新节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab676285a57db869dccb71427c0654794" title="在表尾添加多个节点">dlseq_appends</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00600">600</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gac5a831831e84c67739553b3de4e252d9"></a><!-- doxytag: member="dlseq.h::dlseq_copy" ref="gac5a831831e84c67739553b3de4e252d9" args="(type, dst, src)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_copy</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">dst, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">src&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {                         \
        <span class="keywordtype">size_t</span> _q_c = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0fcd66f91e5863d48fb4730721655885" title="获取表的节点总数">dlseq_count</a>(src);                         \
        memcpy((dst)-&gt;base, (src)-&gt;first, <span class="keyword">sizeof</span>(type) * _q_c); \
        (dst)-&gt;last = ((dst)-&gt;first = (dst)-&gt;base) + _q_c;      \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>深拷贝源表的节点到目标表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">dst</td><td>目标表 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>源表 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 判断是否可以从src拷贝到dst</span>
    <span class="keywordflow">if</span> (<a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad547e1522c3eab4845970c2cb2ff8ec1" title="判断源表是否可以深拷贝到目标表">dlseq_copyable</a>(&amp;dst, &amp;src)) {
        <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac5a831831e84c67739553b3de4e252d9" title="深拷贝源表的节点到目标表">dlseq_copy</a>(<span class="keywordtype">int</span>, &amp;dst, &amp;src);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad547e1522c3eab4845970c2cb2ff8ec1" title="判断源表是否可以深拷贝到目标表">dlseq_copyable</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00618">618</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga1ffc7ba150c4254c36b1bceb1f3e0ba3"></a><!-- doxytag: member="dlseq.h::dlseq_push_front" ref="ga1ffc7ba150c4254c36b1bceb1f3e0ba3" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_push_front</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;(--(head)-&gt;first)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取指向表首插入节点位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回迭代器 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 在表首插入i</span>
    *<a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga1ffc7ba150c4254c36b1bceb1f3e0ba3" title="获取指向表首插入节点位置的迭代器">dlseq_push_front</a>(&amp;head) = i;
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac73e9d7e34f9441d1a0c9f85dfc8ca65" title="获取指向表首节点位置的迭代器">dlseq_pop_front</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga65bbbab96c82c62d05b0412cb2c263a1" title="获取指向表尾插入节点位置的迭代器">dlseq_push_back</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga359a8bae60736d1abd3211cb526cb295" title="获取指向表尾节点位置的迭代器">dlseq_pop_back</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00636">636</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga65bbbab96c82c62d05b0412cb2c263a1"></a><!-- doxytag: member="dlseq.h::dlseq_push_back" ref="ga65bbbab96c82c62d05b0412cb2c263a1" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_push_back</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;last++)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取指向表尾插入节点位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回迭代器 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 在表尾插入i</span>
    *<a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga65bbbab96c82c62d05b0412cb2c263a1" title="获取指向表尾插入节点位置的迭代器">dlseq_push_back</a>(&amp;head) = i;
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga359a8bae60736d1abd3211cb526cb295" title="获取指向表尾节点位置的迭代器">dlseq_pop_back</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga1ffc7ba150c4254c36b1bceb1f3e0ba3" title="获取指向表首插入节点位置的迭代器">dlseq_push_front</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac73e9d7e34f9441d1a0c9f85dfc8ca65" title="获取指向表首节点位置的迭代器">dlseq_pop_front</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00650">650</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gac73e9d7e34f9441d1a0c9f85dfc8ca65"></a><!-- doxytag: member="dlseq.h::dlseq_pop_front" ref="gac73e9d7e34f9441d1a0c9f85dfc8ca65" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_pop_front</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;first++)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取指向表首节点位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回迭代器 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 移除表首节点</span>
    <span class="keywordtype">int</span> d = *<a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac73e9d7e34f9441d1a0c9f85dfc8ca65" title="获取指向表首节点位置的迭代器">dlseq_pop_front</a>(&amp;head);
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga1ffc7ba150c4254c36b1bceb1f3e0ba3" title="获取指向表首插入节点位置的迭代器">dlseq_push_front</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga65bbbab96c82c62d05b0412cb2c263a1" title="获取指向表尾插入节点位置的迭代器">dlseq_push_back</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga359a8bae60736d1abd3211cb526cb295" title="获取指向表尾节点位置的迭代器">dlseq_pop_back</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00664">664</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga359a8bae60736d1abd3211cb526cb295"></a><!-- doxytag: member="dlseq.h::dlseq_pop_back" ref="ga359a8bae60736d1abd3211cb526cb295" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_pop_back</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;(--(head)-&gt;last)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取指向表尾节点位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回迭代器 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 移除表尾节点</span>
    <span class="keywordtype">int</span> d = *<a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga359a8bae60736d1abd3211cb526cb295" title="获取指向表尾节点位置的迭代器">dlseq_pop_back</a>(&amp;head);
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga65bbbab96c82c62d05b0412cb2c263a1" title="获取指向表尾插入节点位置的迭代器">dlseq_push_back</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga1ffc7ba150c4254c36b1bceb1f3e0ba3" title="获取指向表首插入节点位置的迭代器">dlseq_push_front</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac73e9d7e34f9441d1a0c9f85dfc8ca65" title="获取指向表首节点位置的迭代器">dlseq_pop_front</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00678">678</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga47b7a737affe0b4d4254330362a639d3"></a><!-- doxytag: member="dlseq.h::dlseq_iter_replace" ref="ga47b7a737affe0b4d4254330362a639d3" args="(victim, newly)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_iter_replace</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">victim, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">newly&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(*(victim) = (newly))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>用新节点替换目标节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">victim</td><td>受害目标节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">newly</td><td>新节点 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00686">686</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga623291c270ac521a167fb7a1a75e054f"></a><!-- doxytag: member="dlseq.h::__dlseq_iter_swap" ref="ga623291c270ac521a167fb7a1a75e054f" args="(type, a, b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define __dlseq_iter_swap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">a, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">b&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {\
    type _q_t = *(a); *(a) = *(b); *(b) = _q_t; } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00688">688</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaf1ec6d8c982f4c3b3bf9a774f3556d83"></a><!-- doxytag: member="dlseq.h::dlseq_iter_swap" ref="gaf1ec6d8c982f4c3b3bf9a774f3556d83" args="(type, a, b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_iter_swap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">a, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">b&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {        \
        type * _q_b = (b); type * _q_a = (a);   \
        __dlseq_iter_swap(type, _q_a, _q_b);    \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>用新节点替换目标节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">a</td><td>第一个节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">b</td><td>第二个节点 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00698">698</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga93f49440956f625d85ecd6c56a6a557b"></a><!-- doxytag: member="dlseq.h::dlseq_replace" ref="ga93f49440956f625d85ecd6c56a6a557b" args="(victim, newly)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_replace</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">victim, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">newly&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(*(victim) = *(newly))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>用新表头替换目标表头 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">victim</td><td>受害目标表头 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">newly</td><td>新表头 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00709">709</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga3b6c7e04f4f0b4f09a2dfd96cdbd2f48"></a><!-- doxytag: member="dlseq.h::dlseq_swap" ref="ga3b6c7e04f4f0b4f09a2dfd96cdbd2f48" args="(type, a, b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_swap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">a, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">b&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> { \
        <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga3437c799d3e0d406d09c5ca77229df31" title="type类型表头">dlseq_head</a>(type) t = *(a);  \
        *(a) = *(b); *(b) = t;      \
    } while (0)
</pre></div>
<p>交换两个表头 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">a</td><td>第一个表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">b</td><td>第二个表头 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00718">718</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga75e1528caa8626fb419cca8dc20cdf92"></a><!-- doxytag: member="dlseq.h::dlseq_front" ref="ga75e1528caa8626fb419cca8dc20cdf92" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_front</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;first)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到表首节点 </p>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回节点 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga32ba395611eaf4595297f01765cc46b3" title="得到表首节点">dlseq_back</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00729">729</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga32ba395611eaf4595297f01765cc46b3"></a><!-- doxytag: member="dlseq.h::dlseq_back" ref="ga32ba395611eaf4595297f01765cc46b3" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_back</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;last - 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到表首节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回节点 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga75e1528caa8626fb419cca8dc20cdf92" title="得到表首节点">dlseq_front</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00738">738</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga6474f4beeadeb8b3be6baa1a375a16ed"></a><!-- doxytag: member="dlseq.h::dlseq_begin" ref="ga6474f4beeadeb8b3be6baa1a375a16ed" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_begin</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;dlseq_front(head)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到指向正向起始位置的迭代器 </p>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回迭代器 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 遍历序表</span>
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) e = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8df3a77782b4f5626a1e3a8c6f0aa18d" title="得到指向正向终止位置的迭代器">dlseq_end</a>(&amp;head);
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) i = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga6474f4beeadeb8b3be6baa1a375a16ed" title="得到指向正向起始位置的迭代器">dlseq_begin</a>(&amp;head);
    while (i &lt; e) {
        printf(<span class="stringliteral">&quot;[%d]=%d\n&quot;</span>, <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gadf3fc42eed9528f855e6177475a000cc" title="获取迭代器对应的正向索引">dlseq_index_of</a>(&amp;head, i), *i);
        <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga01ab03ece963941926de7996cdb7f1c0" title="迭代器递增">dlseq_inc</a>(i);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8df3a77782b4f5626a1e3a8c6f0aa18d" title="得到指向正向终止位置的迭代器">dlseq_end</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8985a9f0fe4e6ad0604812db85008bf5" title="得到指向逆向起始位置的迭代器">dlseq_rbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gacddec11d890f47536009ac2c4a4be320" title="得到指向逆向起始位置的迭代器">dlseq_rend</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00756">756</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga8df3a77782b4f5626a1e3a8c6f0aa18d"></a><!-- doxytag: member="dlseq.h::dlseq_end" ref="ga8df3a77782b4f5626a1e3a8c6f0aa18d" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_end</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;last)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到指向正向终止位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回迭代器 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga6474f4beeadeb8b3be6baa1a375a16ed" title="得到指向正向起始位置的迭代器">dlseq_begin</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8985a9f0fe4e6ad0604812db85008bf5" title="得到指向逆向起始位置的迭代器">dlseq_rbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gacddec11d890f47536009ac2c4a4be320" title="得到指向逆向起始位置的迭代器">dlseq_rend</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00765">765</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gad46f419b47937396e808b278b799c9a1"></a><!-- doxytag: member="dlseq.h::dlseq_end_of" ref="gad46f419b47937396e808b278b799c9a1" args="(itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_end_of</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr</td><td>)</td>
          <td>&#160;&#160;&#160;((itr) + 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到指向当前节点的正向终止位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">last</td><td>当前节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回终止迭代器 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga6474f4beeadeb8b3be6baa1a375a16ed" title="得到指向正向起始位置的迭代器">dlseq_begin</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8df3a77782b4f5626a1e3a8c6f0aa18d" title="得到指向正向终止位置的迭代器">dlseq_end</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00774">774</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga8985a9f0fe4e6ad0604812db85008bf5"></a><!-- doxytag: member="dlseq.h::dlseq_rbegin" ref="ga8985a9f0fe4e6ad0604812db85008bf5" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_rbegin</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;dlseq_back(head)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到指向逆向起始位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回迭代器 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8df3a77782b4f5626a1e3a8c6f0aa18d" title="得到指向正向终止位置的迭代器">dlseq_end</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga6474f4beeadeb8b3be6baa1a375a16ed" title="得到指向正向起始位置的迭代器">dlseq_begin</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gacddec11d890f47536009ac2c4a4be320" title="得到指向逆向起始位置的迭代器">dlseq_rend</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00783">783</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gacddec11d890f47536009ac2c4a4be320"></a><!-- doxytag: member="dlseq.h::dlseq_rend" ref="gacddec11d890f47536009ac2c4a4be320" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_rend</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;first - 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到指向逆向起始位置的迭代器 </p>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回迭代器 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8df3a77782b4f5626a1e3a8c6f0aa18d" title="得到指向正向终止位置的迭代器">dlseq_end</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8985a9f0fe4e6ad0604812db85008bf5" title="得到指向逆向起始位置的迭代器">dlseq_rbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gacddec11d890f47536009ac2c4a4be320" title="得到指向逆向起始位置的迭代器">dlseq_rend</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00791">791</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae4d086dbf72b7d1a1e5a3e60bf1240c5"></a><!-- doxytag: member="dlseq.h::dlseq_rend_of" ref="gae4d086dbf72b7d1a1e5a3e60bf1240c5" args="(itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_rend_of</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr</td><td>)</td>
          <td>&#160;&#160;&#160;((itr) - 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到指向当前节点的逆向终止位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">last</td><td>当前节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回终止迭代器 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8985a9f0fe4e6ad0604812db85008bf5" title="得到指向逆向起始位置的迭代器">dlseq_rbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gacddec11d890f47536009ac2c4a4be320" title="得到指向逆向起始位置的迭代器">dlseq_rend</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00800">800</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga9ce07f7c9c2517cc61557bb9ee5d1248"></a><!-- doxytag: member="dlseq.h::dlseq_next" ref="ga9ce07f7c9c2517cc61557bb9ee5d1248" args="(itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_next</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr</td><td>)</td>
          <td>&#160;&#160;&#160;((itr) + 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取当前节点的后继节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>当前节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回后继节点 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga333294fd96e85f7314e6f6cc7e5f9d82" title="获取当前节点的前驱节点">dlseq_prev</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00809">809</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga333294fd96e85f7314e6f6cc7e5f9d82"></a><!-- doxytag: member="dlseq.h::dlseq_prev" ref="ga333294fd96e85f7314e6f6cc7e5f9d82" args="(itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_prev</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr</td><td>)</td>
          <td>&#160;&#160;&#160;((itr) - 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取当前节点的前驱节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>当前节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回前驱节点 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9ce07f7c9c2517cc61557bb9ee5d1248" title="获取当前节点的后继节点">dlseq_next</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00818">818</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga8d6b85ec3412d57a90c7af5282a7bfd6"></a><!-- doxytag: member="dlseq.h::dlseq_advance" ref="ga8d6b85ec3412d57a90c7af5282a7bfd6" args="(cur, dist)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_advance</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cur, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">dist&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((cur) + (dist))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>给迭代器增加一段距离或减小一段距离 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cur</td><td>迭代器 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dist</td><td>增加的距离。正数时，表示增加；负数时，表示减小 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回新迭代器 </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00827">827</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga643c9d33c7a1ac060d44dda56ae11c4f"></a><!-- doxytag: member="dlseq.h::DLSEQ_NOT_END" ref="ga643c9d33c7a1ac060d44dda56ae11c4f" args="(itr, end)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DLSEQ_NOT_END</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((itr) &lt; (end))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>迭代结束条件 </p>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) e = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8df3a77782b4f5626a1e3a8c6f0aa18d" title="得到指向正向终止位置的迭代器">dlseq_end</a>(&amp;head);
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) i = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga6474f4beeadeb8b3be6baa1a375a16ed" title="得到指向正向起始位置的迭代器">dlseq_begin</a>(&amp;head);
    while (<a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga643c9d33c7a1ac060d44dda56ae11c4f" title="迭代结束条件">DLSEQ_NOT_END</a>(i, e)) {
        ......
        <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga01ab03ece963941926de7996cdb7f1c0" title="迭代器递增">dlseq_inc</a>(i);
    }
</pre></div> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00853">853</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga51fa2c1938f25c3658d8bbd5c75f9c9b"></a><!-- doxytag: member="dlseq.h::DLSEQ_NOT_REND" ref="ga51fa2c1938f25c3658d8bbd5c75f9c9b" args="(itr, rend)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DLSEQ_NOT_REND</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">rend&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((itr) &gt; (rend))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>逆向迭代结束条件 </p>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) e = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gacddec11d890f47536009ac2c4a4be320" title="得到指向逆向起始位置的迭代器">dlseq_rend</a>(&amp;head);
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) i = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8985a9f0fe4e6ad0604812db85008bf5" title="得到指向逆向起始位置的迭代器">dlseq_rbegin</a>(&amp;head);
    while (<a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga51fa2c1938f25c3658d8bbd5c75f9c9b" title="逆向迭代结束条件">DLSEQ_NOT_REND</a>(i, e)) {
        ......
        <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga37f4f964e40c0127fe53f972c1ce3564" title="迭代器递减">dlseq_dec</a>(i);
    }
</pre></div> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00854">854</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga01ab03ece963941926de7996cdb7f1c0"></a><!-- doxytag: member="dlseq.h::dlseq_inc" ref="ga01ab03ece963941926de7996cdb7f1c0" args="(itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_inc</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr</td><td>)</td>
          <td>&#160;&#160;&#160;(++(itr))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>迭代器递增 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">迭代器</td><td></td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00886">886</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga37f4f964e40c0127fe53f972c1ce3564"></a><!-- doxytag: member="dlseq.h::dlseq_dec" ref="ga37f4f964e40c0127fe53f972c1ce3564" args="(itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_dec</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr</td><td>)</td>
          <td>&#160;&#160;&#160;(--(itr))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>迭代器递减 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">迭代器</td><td></td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00887">887</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaa6bb2aa8b6e1b9eecba00c50135fc17b"></a><!-- doxytag: member="dlseq.h::dlseq_add" ref="gaa6bb2aa8b6e1b9eecba00c50135fc17b" args="(itr, cnt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_add</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((itr) += (cnt))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>迭代器增加 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">迭代器</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>增加量 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00888">888</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga387e19749450fd5d184daa1fa55f616e"></a><!-- doxytag: member="dlseq.h::dlseq_sub" ref="ga387e19749450fd5d184daa1fa55f616e" args="(itr, cnt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_sub</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((itr) -= (cnt))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>迭代器减小 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">迭代器</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>减小量 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00889">889</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga5ac7e6ad6068260172a91d0cdd6409d0"></a><!-- doxytag: member="dlseq.h::dlseq_inc_later" ref="ga5ac7e6ad6068260172a91d0cdd6409d0" args="(itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_inc_later</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr</td><td>)</td>
          <td>&#160;&#160;&#160;((itr)++)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>迭代器后递增 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">迭代器</td><td></td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00890">890</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gad5280822494b200f031a16a1312505b2"></a><!-- doxytag: member="dlseq.h::dlseq_dec_later" ref="gad5280822494b200f031a16a1312505b2" args="(itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_dec_later</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr</td><td>)</td>
          <td>&#160;&#160;&#160;((itr)--)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>迭代器后递减 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">迭代器</td><td></td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00891">891</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga6c72b56a6426b9cca6aa338282809b5a"></a><!-- doxytag: member="dlseq.h::dlseq_add_later" ref="ga6c72b56a6426b9cca6aa338282809b5a" args="(itr, cnt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_add_later</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(dlseq_add(itr, cnt) - (cnt))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>迭代器后增加 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">迭代器</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>增加量 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00892">892</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga892a66d0a679113f3959bdc30528c218"></a><!-- doxytag: member="dlseq.h::dlseq_sub_later" ref="ga892a66d0a679113f3959bdc30528c218" args="(itr, cnt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_sub_later</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(dlseq_sub(itr, cnt) + (cnt))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>迭代器后减少 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">迭代器</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>减小量 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00893">893</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga831b9c1bcf432adf5a9856f0415464f0"></a><!-- doxytag: member="dlseq.h::dlseq_foreach" ref="ga831b9c1bcf432adf5a9856f0415464f0" args="(type, begin, end, fn)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_foreach</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fn&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type * _q_e = (type *)(end);        \
        type * _q_f = (type *)(begin);      \
        <span class="keywordflow">while</span> (_q_f &lt; _q_e) {               \
            fn(_q_f);                       \
            ++_q_f;                         \
        }                                   \
    } <span class="keywordflow">while</span>(0)
</pre></div>
<p>正向遍历begin到end的节点， 并为每一个节点调用回调函数或宏 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">fn</td><td>回调函数或宏 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00904">904</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gad4ff379776899de6d39d9aa14fe34993"></a><!-- doxytag: member="dlseq.h::dlseq_reverse_foreach" ref="gad4ff379776899de6d39d9aa14fe34993" args="(type, rbegin, rend, fn)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_reverse_foreach</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">rbegin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">rend, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fn&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type * _q_e = (type *)(rend);       \
        type * _q_f = (type *)(rbegin);     \
        <span class="keywordflow">while</span> (_q_f &gt; _q_e) {               \
            fn(_q_f);                       \
            --_q_f;                         \
        }                                   \
    } <span class="keywordflow">while</span>(0)
</pre></div>
<p>逆向遍历rbegin到rend的节点， 并为每一个节点调用回调函数或宏 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">rbegin</td><td>逆向起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">rend</td><td>逆向终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">fn</td><td>回调函数或宏 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00922">922</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga39a31078b854331a7545bf39fca28e1c"></a><!-- doxytag: member="dlseq.h::dlseq_search" ref="ga39a31078b854331a7545bf39fca28e1c" args="(type, begin, end, equal, var, res)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_search</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">equal, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">var, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">res&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type _q_t = (var);                      \
        type * _q_e = (end);                    \
        type * _q_f = (begin);                  \
        (res) = NULL;                           \
        <span class="keywordflow">while</span> (_q_f &lt; _q_e) {                   \
            type * _q_cb = _q_f++;              \
            <span class="keywordflow">if</span> (equal(_q_cb, (&amp;_q_t))) {        \
                (res) = _q_cb;                  \
                <span class="keywordflow">break</span>;                          \
            }                                   \
        }                                       \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>顺序查找区域内的指定节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">equal</td><td>比较函数或宏。相等时返回1，不相等返回0 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">var</td><td>搜索的键值，常量，变量均可 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">res</td><td>保存搜索结果的变量，类型是节点指针。 结果为NULL表示找不到节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga1ca62ed17125c8f59557e1b970fd4d45" title="二分查找区域内的指定节点">dlseq_binary_search</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00943">943</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga1ca62ed17125c8f59557e1b970fd4d45"></a><!-- doxytag: member="dlseq.h::dlseq_binary_search" ref="ga1ca62ed17125c8f59557e1b970fd4d45" args="(type, begin, end, greater, var, res)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_binary_search</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">var, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">res&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type _q_t = (var);                                  \
        type * _q_e = (end);                                \
        type * _q_f = (begin);                              \
        (res) = NULL;                                       \
        <span class="keywordflow">while</span> (_q_f &lt; _q_e) {                               \
            type * _q_m = _q_f + ((_q_e - _q_f) &gt;&gt; 1);      \
            <span class="keywordflow">if</span> (greater(_q_m, (&amp;_q_t))) {                   \
                _q_e = _q_m;                                \
            } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (greater((&amp;_q_t), _q_m)) {            \
                _q_f = _q_m + 1;                            \
            } <span class="keywordflow">else</span> {                                        \
                (res) = _q_m;                               \
                <span class="keywordflow">break</span>;                                      \
            }                                               \
        }                                                   \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>二分查找区域内的指定节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏。升序:(*i &gt; *j) 降序:(*i &lt; *j) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">var</td><td>搜索的键值，常量，变量均可 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">res</td><td>保存搜索结果的变量，类型是节点指针。结果为NULL表示找不到节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>必须保证，表在查找之前是升序的 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga39a31078b854331a7545bf39fca28e1c" title="顺序查找区域内的指定节点">dlseq_search</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0e70efb40f7d7cc678af7150990a2abb" title="判断区域是否是已排序的">dlseq_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l00969">969</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga678f3f705968d3f7d63ad6dae67c1a3e"></a><!-- doxytag: member="dlseq.h::dlseq_vbegin" ref="ga678f3f705968d3f7d63ad6dae67c1a3e" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_vbegin</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;dlseq_begin(head)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到正反转的起始迭代器 </p>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回正反转迭代器 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 反转表</span>
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) ve = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga76ba6e93e9250c4f760cdb428c1f9b66" title="得到用于反转的终止位置的迭代器">dlseq_vend</a>(&amp;head);
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) vi = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga678f3f705968d3f7d63ad6dae67c1a3e" title="得到正反转的起始迭代器">dlseq_vbegin</a>(&amp;head);
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) vr = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9da7efbb8d187840982f9dcb8cdd6813" title="得到逆反转的起始迭代器">dlseq_rvbegin</a>(&amp;head);
    while (vi &lt; ve) {
        <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaf4891f2fccdd0ceed3bc3051f54951c6" title="交换反转操作">dlseq_vswap</a>(<span class="keywordtype">int</span>, vi, vr);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9da7efbb8d187840982f9dcb8cdd6813" title="得到逆反转的起始迭代器">dlseq_rvbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga76ba6e93e9250c4f760cdb428c1f9b66" title="得到用于反转的终止位置的迭代器">dlseq_vend</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaf4891f2fccdd0ceed3bc3051f54951c6" title="交换反转操作">dlseq_vswap</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga4f45f7c4d2ebabb744fbaab175f4128b" title="反转表">dlseq_reverse</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01020">1020</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga9da7efbb8d187840982f9dcb8cdd6813"></a><!-- doxytag: member="dlseq.h::dlseq_rvbegin" ref="ga9da7efbb8d187840982f9dcb8cdd6813" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_rvbegin</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;dlseq_rbegin(head)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到逆反转的起始迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回迭代器 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga678f3f705968d3f7d63ad6dae67c1a3e" title="得到正反转的起始迭代器">dlseq_vbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga76ba6e93e9250c4f760cdb428c1f9b66" title="得到用于反转的终止位置的迭代器">dlseq_vend</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaf4891f2fccdd0ceed3bc3051f54951c6" title="交换反转操作">dlseq_vswap</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga4f45f7c4d2ebabb744fbaab175f4128b" title="反转表">dlseq_reverse</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01021">1021</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga76ba6e93e9250c4f760cdb428c1f9b66"></a><!-- doxytag: member="dlseq.h::dlseq_vend" ref="ga76ba6e93e9250c4f760cdb428c1f9b66" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_vend</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;first + (dlseq_count(head) &gt;&gt; 1))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到用于反转的终止位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dlseq_iter 返回迭代器 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 反转表</span>
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) ve = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga76ba6e93e9250c4f760cdb428c1f9b66" title="得到用于反转的终止位置的迭代器">dlseq_vend</a>(&amp;head);
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) vi = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga678f3f705968d3f7d63ad6dae67c1a3e" title="得到正反转的起始迭代器">dlseq_vbegin</a>(&amp;head);
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) vr = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9da7efbb8d187840982f9dcb8cdd6813" title="得到逆反转的起始迭代器">dlseq_rvbegin</a>(&amp;head);
    while (vi &lt; ve) {
        <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaf4891f2fccdd0ceed3bc3051f54951c6" title="交换反转操作">dlseq_vswap</a>(<span class="keywordtype">int</span>, vi, vr);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga678f3f705968d3f7d63ad6dae67c1a3e" title="得到正反转的起始迭代器">dlseq_vbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9da7efbb8d187840982f9dcb8cdd6813" title="得到逆反转的起始迭代器">dlseq_rvbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaf4891f2fccdd0ceed3bc3051f54951c6" title="交换反转操作">dlseq_vswap</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga4f45f7c4d2ebabb744fbaab175f4128b" title="反转表">dlseq_reverse</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01040">1040</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaf4891f2fccdd0ceed3bc3051f54951c6"></a><!-- doxytag: member="dlseq.h::dlseq_vswap" ref="gaf4891f2fccdd0ceed3bc3051f54951c6" args="(type, i, r)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_vswap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">i, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">r&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {    \
        __dlseq_iter_swap(type, i, r);  \
        dlseq_vnext(i, r);              \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>交换反转操作 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">i</td><td>正反转迭代器 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">r</td><td>逆反转迭代器 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 反转表</span>
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) ve = <a class="code" href="group___xE5_x8D_x95_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga169be3d345b481c5c2655abbfd663826" title="得到用于反转的终止位置的迭代器">sllnk_vend</a>(&amp;head);
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) vi = <a class="code" href="group___xE5_x8D_x95_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4c010000f3a7fc4d9c3ff5199896d627" title="得到用于反转的起始位置的迭代器">sllnk_vbegin</a>(&amp;head);
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) vr = sllnk_rvbegin(&amp;head);
    while (vi &lt; ve) {
        sllnk_vswap(<span class="keywordtype">int</span>, vi, vr);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4c010000f3a7fc4d9c3ff5199896d627" title="得到用于反转的起始位置的迭代器">sllnk_vbegin</a>, <a class="el" href="group___xE5_x8D_x95_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga169be3d345b481c5c2655abbfd663826" title="得到用于反转的终止位置的迭代器">sllnk_vend</a>, <a class="el" href="group___xE5_x8D_x95_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga71dc4ef578add6513b4eb045b41dcecb" title="反转表">sllnk_reverse</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01063">1063</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga4f45f7c4d2ebabb744fbaab175f4128b"></a><!-- doxytag: member="dlseq.h::dlseq_reverse" ref="ga4f45f7c4d2ebabb744fbaab175f4128b" args="(type, head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_reverse</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {          \
        type * _q_e = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga76ba6e93e9250c4f760cdb428c1f9b66" title="得到用于反转的终止位置的迭代器">dlseq_vend</a>(head);         \
        type * _q_i = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga678f3f705968d3f7d63ad6dae67c1a3e" title="得到正反转的起始迭代器">dlseq_vbegin</a>(head);       \
        type * _q_j = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9da7efbb8d187840982f9dcb8cdd6813" title="得到逆反转的起始迭代器">dlseq_rvbegin</a>(head);      \
        <span class="keywordflow">while</span> (_q_i &lt; _q_e)                     \
            <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaf4891f2fccdd0ceed3bc3051f54951c6" title="交换反转操作">dlseq_vswap</a>(type, _q_i, _q_j);      \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>反转表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga678f3f705968d3f7d63ad6dae67c1a3e" title="得到正反转的起始迭代器">dlseq_vbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9da7efbb8d187840982f9dcb8cdd6813" title="得到逆反转的起始迭代器">dlseq_rvbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga76ba6e93e9250c4f760cdb428c1f9b66" title="得到用于反转的终止位置的迭代器">dlseq_vend</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaf4891f2fccdd0ceed3bc3051f54951c6" title="交换反转操作">dlseq_vswap</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01075">1075</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga01367e1ec99347d055599c797fb484cd"></a><!-- doxytag: member="dlseq.h::dlseq_serialize" ref="ga01367e1ec99347d055599c797fb484cd" args="(type, head, buf)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_serialize</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">buf&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;memcpy(buf, (head)-&gt;first, sizeof(type) * dlseq_count(head))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>序列化 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">buf</td><td>序列缓存 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd>若要进行反序列化还原表，请使用dlseq_init_serial, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab10a512399502928d8663659815ebaea" title="初始化序列">DLSEQ_INIT_SERIAL</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01091">1091</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga311df7cdf33e89ae2888408ac946827b"></a><!-- doxytag: member="dlseq.h::dlseq_fill" ref="ga311df7cdf33e89ae2888408ac946827b" args="(type, begin, end, val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_fill</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">val&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type _q_v = (val);      \
        type * _q_e = (end);    \
        type * _q_f = (begin);  \
        <span class="keywordflow">while</span> (_q_f &lt; _q_e)     \
            *_q_f++ = _q_v;     \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>用val填充区域 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">val</td><td>填充值 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae59f3e47930b766b879c7b29d0f2218e" title="使用输入产生器来填充区域">dlseq_generate</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01103">1103</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae59f3e47930b766b879c7b29d0f2218e"></a><!-- doxytag: member="dlseq.h::dlseq_generate" ref="gae59f3e47930b766b879c7b29d0f2218e" args="(type, begin, end, generator)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_generate</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">generator&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type * _q_e = (end);        \
        type * _q_f = (begin);      \
        <span class="keywordflow">while</span> (_q_f &lt; _q_e)         \
            *_q_f++ = (generator);  \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>使用输入产生器来填充区域 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">generator</td><td>输入产生器 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga311df7cdf33e89ae2888408ac946827b" title="用val填充区域">dlseq_fill</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01120">1120</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaa7b9575d98c17fcde6612f91f79b953b"></a><!-- doxytag: member="dlseq.h::dlseq_is_heap" ref="gaa7b9575d98c17fcde6612f91f79b953b" args="(type, begin, end, greater, res)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_is_heap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">res&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type * _q_e = (end);                            \
        type * _q_f = (begin);                          \
        <span class="keywordtype">size_t</span> _q_c = _q_e - _q_f;                      \
        type * _q_b = _q_f + ((_q_c - 1) &gt;&gt; 1);         \
        type * _q_p = _q_f;                             \
        type * _q_i = _q_f + 1;                         \
        <span class="keywordflow">for</span> ((res) = 1; _q_b-- &gt; _q_f; ++_q_p) {        \
            __dlseq_ret_gt(_q_i, _q_p, res, greater);   \
            __dlseq_ret_gt(_q_i, _q_p, res, greater);   \
        }                                               \
        <span class="keywordflow">if</span> (_q_i &lt; _q_e &amp;&amp; (greater(_q_i, _q_p))) {    \
            (res) = 0; <span class="keywordflow">break</span>;                           \
        }                                               \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>判断区域是否是一个最大堆 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 最大堆:(*i &gt; *j) 最小堆:(*i &lt; *j) </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">res</td><td>保存结果的变量，1为真，0为假 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>方法:逐个比较每个非根节点与其父节点的值 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gafd902927efafe9ca45985b21a6097284" title="将一段区域建立成最大堆">dlseq_make_heap</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga54a2e34c3ae32b16f143a305d6e52931" title="将区域最后一个节点插入到堆中">dlseq_push_heap</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga62bf84e92b19a7191b1337f9698b525a" title="弹出区域中堆的顶点节点">dlseq_pop_heap</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaeed9eecdd875ae3bae1e27ca01de5cd7" title="对最大堆进行排序">dlseq_sort_heap</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01139">1139</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga54a2e34c3ae32b16f143a305d6e52931"></a><!-- doxytag: member="dlseq.h::dlseq_push_heap" ref="ga54a2e34c3ae32b16f143a305d6e52931" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_push_heap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> { \
        type * _q_l = (type *)(end) - 1;                \
        type * _q_f = (type *)(begin);                  \
        <span class="keywordtype">size_t</span> _q_i = _q_l - _q_f;                      \
        <span class="keywordtype">size_t</span> _q_p = (_q_i - 1) &gt;&gt; 1;                  \
        type * _q_ib = _q_f + _q_i;                     \
        type * _q_pb = _q_f + _q_p;                     \
        type _q_t = *_q_ib;                             \
        <span class="keywordflow">while</span> (_q_i &amp;&amp; (greater((&amp;_q_t), _q_pb))) {   \
            *_q_ib = *_q_pb;                            \
            _q_ib = _q_pb;                              \
            _q_i = _q_p;                                \
            _q_p = (_q_p - 1) &gt;&gt; 1;                     \
            _q_pb = _q_f + _q_p;                        \
        }                                               \
        *_q_ib = _q_t;                                  \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>将区域最后一个节点插入到堆中 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 最大堆:(*i &gt; *j) 最小堆:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>使用上滤插入法将最后一个节点last插入到(first,last-1)堆中， 所以插入的前提是(first,last-1)是一个堆<br/>
 上滤插入算法如下：<br/>
 (1) 将last记为current节点.<br/>
 (2) 若current无父节点(即current为根节点)，则退出.<br/>
 (3) 若current的值小于等于父节点的值，则退出.<br/>
 (4) 交换current和父节点的值，并记父节点为current节点，转(2) </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gafd902927efafe9ca45985b21a6097284" title="将一段区域建立成最大堆">dlseq_make_heap</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa7b9575d98c17fcde6612f91f79b953b" title="判断区域是否是一个最大堆">dlseq_is_heap</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga62bf84e92b19a7191b1337f9698b525a" title="弹出区域中堆的顶点节点">dlseq_pop_heap</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaeed9eecdd875ae3bae1e27ca01de5cd7" title="对最大堆进行排序">dlseq_sort_heap</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01175">1175</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga62bf84e92b19a7191b1337f9698b525a"></a><!-- doxytag: member="dlseq.h::dlseq_pop_heap" ref="ga62bf84e92b19a7191b1337f9698b525a" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_pop_heap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {  \
        type * _q_l = (type *)(end) - 1;                \
        type * _q_f = (type *)(begin);                  \
        type * _q_pb = _q_f;                            \
        type * _q_ib, * _q_jb;                          \
        type _q_t = *_q_pb;                             \
        <span class="keywordtype">size_t</span> _q_p = 0, _q_j = 2;                      \
        <span class="keywordtype">size_t</span> _q_L = _q_l - _q_f;                      \
        <span class="keywordflow">for</span> (; _q_j &lt;= _q_L; _q_j = (_q_p + 1) &lt;&lt; 1) {  \
            _q_jb = _q_f + _q_j;                        \
            _q_ib = _q_jb - 1;                          \
            <span class="keywordflow">if</span> (greater(_q_jb, _q_ib)) {                \
                *_q_pb = *_q_jb;                        \
                _q_pb = _q_jb;                          \
                _q_p = _q_j;                            \
            } <span class="keywordflow">else</span> {                                    \
                *_q_pb = *_q_ib;                        \
                _q_pb = _q_ib;                          \
                _q_p = _q_j - 1;                        \
            }                                           \
        }                                               \
        _q_jb = _q_f + ((_q_p - 1) &gt;&gt; 1);               \
        <span class="keywordflow">if</span> (greater(_q_l, _q_jb)) {                     \
            *_q_pb = *_q_jb;                            \
            *_q_jb = *_q_l;                             \
        } <span class="keywordflow">else</span>                                          \
            *_q_pb = *_q_l;                             \
        *_q_l = _q_t;                                   \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>弹出区域中堆的顶点节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 最大堆:(*i &gt; *j) 最小堆:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>使用下滤删除法将first顶点节点从堆中删除，并移动至last位置， 所以删除的前提是(first,last)是一个堆<br/>
 下滤删除算法如下：<br/>
 (1)交换根节点begin和最后子节点last的值.<br/>
 (2)对根节点begin进行下滤调整. </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gafd902927efafe9ca45985b21a6097284" title="将一段区域建立成最大堆">dlseq_make_heap</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa7b9575d98c17fcde6612f91f79b953b" title="判断区域是否是一个最大堆">dlseq_is_heap</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga54a2e34c3ae32b16f143a305d6e52931" title="将区域最后一个节点插入到堆中">dlseq_push_heap</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaeed9eecdd875ae3bae1e27ca01de5cd7" title="对最大堆进行排序">dlseq_sort_heap</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01208">1208</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga95d068a65d49e81a731fb9566203f958"></a><!-- doxytag: member="dlseq.h::__dlseq_adjust_heap" ref="ga95d068a65d49e81a731fb9566203f958" args="(type, base, first, last, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define __dlseq_adjust_heap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">base, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">first, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">last, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {<span class="keywordtype">size_t</span> _q_j = ((first) + 1) &lt;&lt; 1;           \
        type * _q_pb = (base) + (first);            \
        type * _q_lb = (base) + (last);             \
        type * _q_ib, * _q_jb, * _q_mb;             \
        type _q_t = *_q_pb;                         \
        <span class="keywordflow">while</span> (_q_j &lt;= (last)) {                    \
            _q_jb = (base) + _q_j;                  \
            _q_ib = _q_jb - 1;                      \
            <span class="keywordflow">if</span> (greater(_q_jb, _q_ib)) {            \
                _q_mb = _q_jb;                      \
                _q_j = (_q_j + 1) &lt;&lt; 1;             \
            } <span class="keywordflow">else</span> {                                \
                _q_mb = _q_ib;                      \
                _q_j = _q_j &lt;&lt; 1;                   \
            }                                       \
            <span class="keywordflow">if</span> (greater((&amp;_q_t), _q_mb))            \
                <span class="keywordflow">break</span>;                              \
            *_q_pb = *_q_mb;                        \
            _q_pb = _q_mb;                          \
        }                                           \
        <span class="keywordflow">if</span> (_q_j == (last) + 1 &amp;&amp;                   \
            (greater(_q_lb, (&amp;_q_t)))) {            \
            *_q_pb = *_q_lb;                        \
            *_q_lb = _q_t;                          \
        } <span class="keywordflow">else</span>                                      \
            *_q_pb = _q_t;                          \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01248">1248</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gafd902927efafe9ca45985b21a6097284"></a><!-- doxytag: member="dlseq.h::dlseq_make_heap" ref="gafd902927efafe9ca45985b21a6097284" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_make_heap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {\
        type * _q1_f = (type *)(begin);                                 \
        <span class="keywordtype">size_t</span> _q1_l = (type *)(end) - _q1_f - 1;                       \
        <span class="keywordtype">size_t</span> _q1_i = ((_q1_l - 1) &gt;&gt; 1) + 1;                          \
        <span class="keywordflow">while</span> (_q1_i--)                                                 \
            __dlseq_adjust_heap(type, _q1_f, _q1_i, _q1_l, greater);    \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>将一段区域建立成最大堆 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 最大堆:(*i &gt; *j) 最小堆:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>建立堆的算法如下：<br/>
 (1)将最后一个子节点的父节点记为current节点.<br/>
 (2)对current节点进行下滤调整.<br/>
 (3)若current节点向左有同一高度的节点，则将该节点设为current节点并转(2).<br/>
 (4)若current节点有父节点，则将其父节点记为current节点并转(2).<br/>
 (5)若current没有父节点(即current节点为根节点)，则退出算法. </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gafd902927efafe9ca45985b21a6097284" title="将一段区域建立成最大堆">dlseq_make_heap</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa7b9575d98c17fcde6612f91f79b953b" title="判断区域是否是一个最大堆">dlseq_is_heap</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga62bf84e92b19a7191b1337f9698b525a" title="弹出区域中堆的顶点节点">dlseq_pop_heap</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaeed9eecdd875ae3bae1e27ca01de5cd7" title="对最大堆进行排序">dlseq_sort_heap</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01293">1293</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaeed9eecdd875ae3bae1e27ca01de5cd7"></a><!-- doxytag: member="dlseq.h::dlseq_sort_heap" ref="gaeed9eecdd875ae3bae1e27ca01de5cd7" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_sort_heap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {     \
        type * _q1_e = (end);                               \
        type * _q1_f = (begin);                             \
        <span class="keywordflow">while</span> (_q1_e &gt; _q1_f + 1) {                         \
            <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga62bf84e92b19a7191b1337f9698b525a" title="弹出区域中堆的顶点节点">dlseq_pop_heap</a>(type, _q1_f, _q1_e--, greater);  \
        }                                                   \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>对最大堆进行排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 最大堆:(*i &gt; *j) 最小堆:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>排序堆的算法如下(升序)：<br/>
 (1)若first等于last，则排序完成.<br/>
 (2)对(first, last)区间进行pop_heap.<br/>
 (3)last递减，转(1), </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gafd902927efafe9ca45985b21a6097284" title="将一段区域建立成最大堆">dlseq_make_heap</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa7b9575d98c17fcde6612f91f79b953b" title="判断区域是否是一个最大堆">dlseq_is_heap</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga62bf84e92b19a7191b1337f9698b525a" title="弹出区域中堆的顶点节点">dlseq_pop_heap</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga54a2e34c3ae32b16f143a305d6e52931" title="将区域最后一个节点插入到堆中">dlseq_push_heap</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01315">1315</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga9777d7ab606e4f51bbdbf972da459396"></a><!-- doxytag: member="dlseq.h::dlseq_shuffle" ref="ga9777d7ab606e4f51bbdbf972da459396" args="(type, begin, end, _RAND)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_shuffle</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_RAND&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {        \
        type * _q_l = (type *)(end) - 1;                \
        type * _q_f = (type *)(begin);                  \
        <span class="keywordflow">for</span> (; _q_l &gt; _q_f; --_q_l) {                   \
            type * _q_n = _q_f +                        \
                ((_RAND) % ((_q_l - _q_f) + 1));        \
            <span class="keywordflow">if</span> (_q_l &gt; _q_n)                            \
                __dlseq_iter_swap(type, _q_l, _q_n);    \
        }                                               \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>对区域内的节点进行随机排列 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_RAND</td><td>随机数产生器 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01331">1331</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga4aed9d38a685cd50a50a146b80c906d9"></a><!-- doxytag: member="dlseq.h::dlseq_sort_insert" ref="ga4aed9d38a685cd50a50a146b80c906d9" args="(type, head, begin, end, newly, greater_equal)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_sort_insert</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">newly, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater_equal&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type _q_n = (newly);                    \
        type * _q_e = (end);                    \
        type * _q_f = (begin);                  \
        <span class="keywordflow">for</span> (; _q_f &lt; _q_e; ++_q_f) {           \
            <span class="keywordflow">if</span> (greater_equal(_q_f, (&amp;_q_n)))   \
                <span class="keywordflow">break</span>;                          \
        }                                       \
        <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2f78c1229cdf3f7d3c294fc0927fe307" title="在指定位置插入节点">dlseq_insert</a>(type, head, _q_f, _q_n);   \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>按序插入 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">newly</td><td>新节点 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater_equal</td><td>比较函数或宏 升序:(*i &gt;= *j) </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01350">1350</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga0e70efb40f7d7cc678af7150990a2abb"></a><!-- doxytag: member="dlseq.h::dlseq_is_sorted" ref="ga0e70efb40f7d7cc678af7150990a2abb" args="(type, begin, end, greater_equal, res)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_is_sorted</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater_equal, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">res&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type * _q_e = (end);                                \
        type * _q_i = (begin);                              \
        <span class="keywordflow">for</span> ((res) = 1; _q_i + 1 &lt; _q_e; ++_q_i) {          \
            <span class="keywordflow">if</span> (!(greater_equal((_q_i + 1), _q_i))) {       \
                (res) = 0; <span class="keywordflow">break</span>;                           \
            }                                               \
        }                                                   \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>判断区域是否是已排序的 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater_equal</td><td>比较函数或宏 升序:(*i &gt;= *j) </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">res</td><td>保存结果的变量 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2277c5ed79931683f4e900a5b0a6db47" title="冒泡排序">dlseq_bubble_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab0b9b9efee02a2040aeef78b2a4f8b00" title="选择排序">dlseq_select_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gade71f93f6b1deea1b17f5b15ef2da6e0" title="插入排序">dlseq_insert_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae061eca6e3a36bc7fb8b3e19cc3c2c0a" title="希尔排序">dlseq_shell_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab39a605aa355fd3dff3e38cc5b02fc9e" title="奇偶排序">dlseq_oddeven_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae89fb9dc0c9a16ec88160cf6d5b7584a" title="梳子排序">dlseq_comb_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gabddc64a8dc69455900d3e1b359f4df46" title="鸡尾酒排序">dlseq_cocktail_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0b0c8c04814080521e5951cc3cb293b7" title="计数排序">dlseq_counting_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad3c68c03522faaa7f7be96cd94aaf62a" title="鸽巢排序">dlseq_pigeonhole_sort</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01373">1373</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga2277c5ed79931683f4e900a5b0a6db47"></a><!-- doxytag: member="dlseq.h::dlseq_bubble_sort" ref="ga2277c5ed79931683f4e900a5b0a6db47" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_bubble_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {   \
        <span class="keywordtype">int</span> _q_pc = 1;                                      \
        type * _q_l = (end) - 1;                            \
        type * _q_i = (begin);                              \
        <span class="keywordflow">for</span> (; _q_pc &amp;&amp; _q_i &lt; _q_l; ++_q_i) {              \
            type * _q_j = _q_l - 1;                         \
            <span class="keywordflow">for</span> (_q_pc = 0; _q_j &gt;= _q_i; --_q_j) {         \
                type * _q_k = _q_j + 1;                     \
                <span class="keywordflow">if</span> (greater(_q_j, _q_k)) {                  \
                    __dlseq_iter_swap(type, _q_j, _q_k);    \
                    _q_pc = 1;                              \
                }                                           \
            }                                               \
        }                                                   \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>冒泡排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>升序:(*i &gt; *j) 降序:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0e70efb40f7d7cc678af7150990a2abb" title="判断区域是否是已排序的">dlseq_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01392">1392</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gab39a605aa355fd3dff3e38cc5b02fc9e"></a><!-- doxytag: member="dlseq.h::dlseq_oddeven_sort" ref="gab39a605aa355fd3dff3e38cc5b02fc9e" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_oddeven_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {  \
        <span class="keywordtype">int</span> _q_pc = 1;                                      \
        type * _q_l = (end) - 1;                            \
        type * _q_f = (begin);                              \
        <span class="keywordflow">while</span> (_q_pc) {                                     \
            <span class="keywordtype">int</span> _q_w; _q_pc = 0;                            \
            <span class="keywordflow">for</span> (_q_w = 0; _q_w &lt; 2; ++_q_w)                \
                __dlseq_oddeven_scan(_q_w, type, greater);  \
        }                                                   \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>奇偶排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>升序:(*i &gt; *j) 降序:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0e70efb40f7d7cc678af7150990a2abb" title="判断区域是否是已排序的">dlseq_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01417">1417</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga2439c9ef6dfa4416f1779b44e6f61f37"></a><!-- doxytag: member="dlseq.h::__dlseq_oddeven_scan" ref="ga2439c9ef6dfa4416f1779b44e6f61f37" args="(start, type, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define __dlseq_oddeven_scan</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">start, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> { \
        type * _q_i = _q_f + start;                     \
        <span class="keywordflow">while</span> (_q_i &lt; _q_l) {                           \
            type * _q_j = _q_i + 1;                     \
            <span class="keywordflow">if</span> (greater(_q_i, _q_j)) {                  \
                __dlseq_iter_swap(type, _q_i, _q_j);    \
                _q_pc = 1;                              \
            }                                           \
            _q_i += 2;                                  \
        }                                               \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01428">1428</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gabddc64a8dc69455900d3e1b359f4df46"></a><!-- doxytag: member="dlseq.h::dlseq_cocktail_sort" ref="gabddc64a8dc69455900d3e1b359f4df46" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_cocktail_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> { \
        <span class="keywordtype">int</span> _q_pc;                                          \
        type * _q_l = (end) - 1;                            \
        type * _q_f = (begin);                              \
        <span class="keywordflow">do</span> {                                                \
            type * _q_i = _q_f;                             \
            <span class="keywordflow">for</span> (_q_pc = 0; _q_i &lt; _q_l; ++_q_i) {          \
                type * _q_j = _q_i + 1;                     \
                <span class="keywordflow">if</span> (greater(_q_i, _q_j)) {                  \
                    __dlseq_iter_swap(type, _q_i, _q_j);    \
                    _q_pc = 1;                              \
                }                                           \
            }                                               \
            <span class="keywordflow">for</span> (_q_i = --_q_l; _q_i &gt; _q_f; --_q_i) {      \
                type * _q_j = _q_i - 1;                     \
                <span class="keywordflow">if</span> (greater(_q_j, _q_i)) {                  \
                    __dlseq_iter_swap(type, _q_i, _q_j);    \
                    _q_pc = 1;                              \
                }                                           \
            }                                               \
            ++_q_f;                                         \
        } <span class="keywordflow">while</span> (_q_pc);                                    \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>鸡尾酒排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>升序:(*i &gt; *j) 降序:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0e70efb40f7d7cc678af7150990a2abb" title="判断区域是否是已排序的">dlseq_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01449">1449</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae89fb9dc0c9a16ec88160cf6d5b7584a"></a><!-- doxytag: member="dlseq.h::dlseq_comb_sort" ref="gae89fb9dc0c9a16ec88160cf6d5b7584a" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_comb_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {         \
        <span class="keywordtype">int</span> _q_swap = 1;                                        \
        type * _q_e = (end);                                    \
        type * _q_f = (begin);                                  \
        <span class="keywordtype">size_t</span> _q_gap = _q_e - _q_f;                            \
        <span class="keywordflow">while</span> (_q_gap &gt; 1 || _q_swap) {                         \
            type * _q_i, * _q_j;                                \
            <span class="keywordflow">if</span> (_q_gap &gt; 1)                                     \
                _q_gap = (size_t)(((<span class="keywordtype">double</span>)_q_gap)             \
                      / 1.247330950103979);                     \
            _q_i = _q_f;                                        \
            _q_j = _q_f + _q_gap;                               \
            <span class="keywordflow">for</span> (_q_swap = 0; _q_j &lt; _q_e; ++_q_i, ++_q_j) {    \
                <span class="keywordflow">if</span> (greater(_q_i, _q_j)) {                      \
                    __dlseq_iter_swap(type, _q_i, _q_j);        \
                    _q_swap = 1;                                \
                }                                               \
            }                                                   \
        }                                                       \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>梳子排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>升序:(*i &gt; *j) 降序:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0e70efb40f7d7cc678af7150990a2abb" title="判断区域是否是已排序的">dlseq_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01482">1482</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gab0b9b9efee02a2040aeef78b2a4f8b00"></a><!-- doxytag: member="dlseq.h::dlseq_select_sort" ref="gab0b9b9efee02a2040aeef78b2a4f8b00" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_select_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type * _q_e = (end);                            \
        type * _q_i = (begin);                          \
        <span class="keywordflow">for</span> (; _q_i + 1 &lt; _q_e; ++_q_i) {               \
            type * _q_m = _q_i;                         \
            type * _q_j = _q_i + 1;                     \
            <span class="keywordflow">for</span> (; _q_j &lt; _q_e; ++_q_j) {               \
                <span class="keywordflow">if</span> (greater(_q_m, _q_j))                \
                    _q_m = _q_j;                        \
            }                                           \
            <span class="keywordflow">if</span> (_q_i != _q_m)                           \
                __dlseq_iter_swap(type, _q_m, _q_i);    \
        }                                               \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>选择排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>升序:(*i &gt; *j) 降序:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0e70efb40f7d7cc678af7150990a2abb" title="判断区域是否是已排序的">dlseq_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01512">1512</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gade71f93f6b1deea1b17f5b15ef2da6e0"></a><!-- doxytag: member="dlseq.h::dlseq_insert_sort" ref="gade71f93f6b1deea1b17f5b15ef2da6e0" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_insert_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {   \
        type * _q_l = (end) - 1;                            \
        type * _q_f = (begin);                              \
        type * _q_i = _q_l - 1;                             \
        <span class="keywordflow">for</span> (; _q_i &gt;= _q_f; --_q_i) {                      \
            type * _q_j = _q_l;                             \
            <span class="keywordflow">for</span> (; _q_j &gt; _q_i; --_q_j) {                   \
                <span class="keywordflow">if</span> (greater(_q_i, _q_j)) {                  \
                    type _q_t = *_q_i;                      \
                    memcpy(_q_i, _q_i + 1, <span class="keyword">sizeof</span>(type) *   \
                        (_q_j - _q_i));                     \
                    *_q_j = _q_t;                           \
                    <span class="keywordflow">break</span>;                                  \
                }                                           \
            }                                               \
        }                                                   \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>插入排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>升序:(*i &gt; *j) 降序:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0e70efb40f7d7cc678af7150990a2abb" title="判断区域是否是已排序的">dlseq_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01536">1536</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae061eca6e3a36bc7fb8b3e19cc3c2c0a"></a><!-- doxytag: member="dlseq.h::dlseq_shell_sort" ref="gae061eca6e3a36bc7fb8b3e19cc3c2c0a" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_shell_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type * _q_e = (end);                        \
        type * _q_f = (begin);                      \
        <span class="keywordtype">size_t</span> _q_gap = (_q_e - _q_f) &gt;&gt; 1;         \
        <span class="keywordflow">for</span> (; _q_gap; _q_gap &gt;&gt;= 1) {              \
            type * _q_i = _q_f + _q_gap;            \
            <span class="keywordflow">for</span> (; _q_i &lt; _q_e; ++_q_i) {           \
                type _q_t = *_q_i;                  \
                type * _q_j = _q_i - _q_gap;        \
                <span class="keywordflow">while</span> (_q_j &gt;= _q_f &amp;&amp;              \
                    (greater(_q_j, (&amp;_q_t)))) { \
                    _q_j[_q_gap] = *_q_j;           \
                    _q_j -= _q_gap;                 \
                }                                   \
                _q_j[_q_gap] = _q_t;                \
            }                                       \
        }                                           \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>希尔排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>升序:(*i &gt; *j) 降序:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0e70efb40f7d7cc678af7150990a2abb" title="判断区域是否是已排序的">dlseq_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01563">1563</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga0e81257e6808089aea04c746c3b14b0b"></a><!-- doxytag: member="dlseq.h::COUNTING_SIZE" ref="ga0e81257e6808089aea04c746c3b14b0b" args="(_min, _max)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define COUNTING_SIZE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_min, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_max&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((_max) - (_min) + 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>计数排序计数缓存大小 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">_min</td><td>节点最小值 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_max</td><td>节点最大值 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01593">1593</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gabe56db9f8a1c3e4e29a31b7597b9b59e"></a><!-- doxytag: member="dlseq.h::PIGEONHOLE_SIZE" ref="gabe56db9f8a1c3e4e29a31b7597b9b59e" args="(_max)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PIGEONHOLE_SIZE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_max</td><td>)</td>
          <td>&#160;&#160;&#160;((_max) + 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>鸽巢排序计数缓存大小 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">_max</td><td>节点最大值 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01594">1594</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga0b0c8c04814080521e5951cc3cb293b7"></a><!-- doxytag: member="dlseq.h::dlseq_counting_sort" ref="ga0b0c8c04814080521e5951cc3cb293b7" args="(type, begin, end, hole, _min, _max)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_counting_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">hole, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_min, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_max&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type * _q_hole = (type *)(hole);                \
        type * _q_e = (end);                            \
        type * _q_f = (begin);                          \
        type _q_min = (_min);                           \
        type _q_cnt = (_max) - _q_min + 1;              \
        type _q_i = 0;                                  \
        memset(_q_hole, 0, <span class="keyword">sizeof</span>(type) * _q_cnt);      \
        <span class="keywordflow">while</span> (_q_e &gt; _q_f)                             \
            ++_q_hole[*(--_q_e) - _q_min];              \
        <span class="keywordflow">for</span> (; _q_i &lt; _q_cnt; ++_q_i) {                 \
            <span class="keywordtype">size_t</span> _q_c = _q_hole[_q_i];                \
            <span class="keywordflow">while</span> (_q_c--)                              \
                *_q_f++ = _q_i;                         \
        }                                               \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>计数排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">hole</td><td>计数巢 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_min</td><td>节点最小值 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_max</td><td>节点最大值 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>要求节点类型必须是整数类型 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="keywordtype">int</span> hole[<a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_x8E_xAF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0e81257e6808089aea04c746c3b14b0b" title="计数排序计数缓存大小">COUNTING_SIZE</a>(10, 60)];
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) e = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8df3a77782b4f5626a1e3a8c6f0aa18d" title="得到指向正向终止位置的迭代器">dlseq_end</a>(&amp;head);
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) b = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga6474f4beeadeb8b3be6baa1a375a16ed" title="得到指向正向起始位置的迭代器">dlseq_begin</a>(&amp;head);

    <span class="comment">// 计数排序</span>
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0b0c8c04814080521e5951cc3cb293b7" title="计数排序">dlseq_counting_sort</a>(<span class="keywordtype">int</span>, b, e, hole, 10, 60);
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0e70efb40f7d7cc678af7150990a2abb" title="判断区域是否是已排序的">dlseq_is_sorted</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad3c68c03522faaa7f7be96cd94aaf62a" title="鸽巢排序">dlseq_pigeonhole_sort</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01618">1618</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gad3c68c03522faaa7f7be96cd94aaf62a"></a><!-- doxytag: member="dlseq.h::dlseq_pigeonhole_sort" ref="gad3c68c03522faaa7f7be96cd94aaf62a" args="(type, begin, end, hole, _max)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dlseq_pigeonhole_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">hole, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_max&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;dlseq_counting_sort(type, begin, end, hole, 0, _max)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>鸽巢排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">hole</td><td>计数巢 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_max</td><td>节点最大值 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>要求节点类型必须是整数类型，与计数排序不同的是，鸽巢排序 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="keywordtype">int</span> hole[<a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_x8E_xAF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gabe56db9f8a1c3e4e29a31b7597b9b59e" title="鸽巢排序计数缓存大小">PIGEONHOLE_SIZE</a>(50)];
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) e = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8df3a77782b4f5626a1e3a8c6f0aa18d" title="得到指向正向终止位置的迭代器">dlseq_end</a>(&amp;head);
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9af64320d2e9425bd7bdd61b1911dda" title="定义type类型迭代器">dlseq_iter</a>(<span class="keywordtype">int</span>) b = <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga6474f4beeadeb8b3be6baa1a375a16ed" title="得到指向正向起始位置的迭代器">dlseq_begin</a>(&amp;head);

    <span class="comment">// 鸽巢排序</span>
    <a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad3c68c03522faaa7f7be96cd94aaf62a" title="鸽巢排序">dlseq_pigeonhole_sort</a>(<span class="keywordtype">int</span>, b, e, hole, 50);
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0e70efb40f7d7cc678af7150990a2abb" title="判断区域是否是已排序的">dlseq_is_sorted</a>, <a class="el" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0b0c8c04814080521e5951cc3cb293b7" title="计数排序">dlseq_counting_sort</a> </dd></dl>

<p>在文件<a class="el" href="dlseq_8h_source.html">dlseq.h</a>第<a class="el" href="dlseq_8h_source.html#l01655">1655</a>行定义。</p>

</div>
</div>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>数据结构</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>宏定义</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr class="footer"/><address class="footer"><small>Generated at 2015年七月16日 星期四 12:00:42 for Navo Portable Library by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address>
</body>
</html>
